新增了计时规则

This commit is contained in:
wucongxing8150 2024-11-12 13:12:55 +08:00
parent 3855912448
commit 9c00e9e99b
4 changed files with 94 additions and 0 deletions

View File

@ -124,6 +124,21 @@ func (r *QuestionQa) AddQuestionQa(c *gin.Context) {
}
}
// 判断计时
if req.IsTurnTimer == 1 {
if req.QuestionQaTimer == nil {
responses.FailWithMessage("缺少题目计时明细", c)
return
}
for _, item := range req.QuestionQaTimer {
if err := global.Validate.Struct(item); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
}
}
// 业务处理
questionQaService := service.QuestionQaService{}
_, err := questionQaService.AddQuestionQa(req)
@ -167,6 +182,21 @@ func (r *QuestionQa) PutQuestionQa(c *gin.Context) {
}
}
// 判断计时
if req.IsTurnTimer == 1 {
if req.QuestionQaTimer == nil {
responses.FailWithMessage("缺少题目计时明细", c)
return
}
for _, item := range req.QuestionQaTimer {
if err := global.Validate.Struct(item); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
}
}
id := c.Param("qa_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)

View File

@ -67,6 +67,7 @@ func GetQuestionQaListDto(m []*model.QuestionQa) []*QuestionQaDto {
QaStatus: v.QaStatus,
QaRuleContent: v.QaRuleContent,
QaDisplayType: v.QaDisplayType,
IsTurnTimer: v.IsTurnTimer,
QaExpireTime: &v.QaExpireTime,
QaShareId: utils.AddDomain(v.QaShareId),
QaPassword: v.QaPassword,
@ -104,6 +105,7 @@ func GetQuestionQaDto(m *model.QuestionQa) *QuestionQaDto {
QaStatus: m.QaStatus,
QaRuleContent: m.QaRuleContent,
QaDisplayType: m.QaDisplayType,
IsTurnTimer: m.IsTurnTimer,
QaExpireTime: &m.QaExpireTime,
QaShareId: utils.AddDomain(m.QaShareId),
QaPassword: m.QaPassword,

View File

@ -41,12 +41,14 @@ type AddQuestionQa struct {
TokenNum *int `json:"token_num" form:"token_num" label:"飞花令数量" validate:"omitempty,number,min=1"` // 当题库类型为2、3时存在
RoundNum *int `json:"round_num" form:"round_num" label:"轮次数量" validate:"omitempty,number,min=1"` // 当题库类型为3时存在
QaDisplayType int `json:"qa_display_type" form:"qa_display_type" label:"展示类型" validate:"required,oneof=1 2"` // 1:常规 2:飞花令)
IsTurnTimer int `json:"is_turn_timer" form:"is_turn_timer" label:"是否开启计时" validate:"omitempty,oneof=0 1"` // 是否开启计时0:否 1:是)
QaExpireTime string `json:"qa_expire_time" form:"qa_expire_time" label:"过期时间" validate:"required"` // 注意这里假设LocalTime转换为字符串格式处理
QaPassword string `json:"qa_password" form:"qa_password" 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"`
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表示飞花令后单个类型题目数量
QuestionQaTimer []QuestionQaTimer `json:"question_qa_timer" form:"question_qa_timer" label:"计时设置"` //
}
// QuestionQaItem 新增问答题库-题目明细
@ -64,6 +66,13 @@ type TokenQuestionContent struct {
Quantity int `json:"quantity" form:"quantity" validate:"number,min=0" label:"数量"`
}
// QuestionQaTimer 计时设置
type QuestionQaTimer struct {
QuestionType int `json:"question_type" form:"question_type" validate:"required,number,oneof=1 2 3 4" label:"题目类型"` // 题目类型(1:单选 2:多选 3:问答 4:判断)
TimerRule int `json:"timer_rule" form:"timer_rule" validate:"required,number,oneof=1 2" label:"计时规则"` // 计时规则1:正计时 2:倒计时)
Duration int `json:"duration" form:"duration" validate:"required,number,min=1,max=600" label:"时长(秒)"` // 时长(秒)
}
// AddQuestionQaBaseTokenItem 新增问答题库-飞花令明细
type AddQuestionQaBaseTokenItem struct {
TokenId string `json:"token_id" form:"token_id" label:"飞花令明细id" validate:"required"`
@ -78,6 +87,7 @@ type PutQuestionQa struct {
TokenNum *int `json:"token_num" form:"token_num" label:"飞花令数量" validate:"omitempty,number,min=1"` // 当题库类型为2、3时存在
RoundNum *int `json:"round_num" form:"round_num" label:"轮次数量" validate:"omitempty,number,min=1"` // 当题库类型为3时存在
QaDisplayType int `json:"qa_display_type" form:"qa_display_type" label:"展示类型" validate:"required,oneof=1 2"` // 1:常规 2:飞花令)
IsTurnTimer int `json:"is_turn_timer" form:"is_turn_timer" label:"是否开启计时" validate:"omitempty,oneof=0 1"` // 是否开启计时0:否 1:是)
QaExpireTime string `json:"qa_expire_time" form:"qa_expire_time" label:"过期时间" validate:"required"` // 注意这里假设LocalTime转换为字符串格式处理
QaPassword string `json:"qa_password" form:"qa_password" label:"分享密码" validate:"required"`
Image string `json:"image" form:"image" label:"背景图" validate:"required"`
@ -85,6 +95,7 @@ type PutQuestionQa struct {
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:"飞花令明细"` // 展示类型为飞花令时存在
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:"计时设置"` //
}
// PutQuestionQaItem 修改问答题库-明细

View File

@ -79,6 +79,7 @@ func (r *QuestionQaService) AddQuestionQa(req requests.AddQuestionQa) (bool, err
TokenNum: nil,
RoundNum: nil,
QaDisplayType: req.QaDisplayType,
IsTurnTimer: req.IsTurnTimer,
QaExpireTime: model.LocalTime(qaExpireTime),
QaPassword: req.QaPassword,
OpenNumber: 0,
@ -245,6 +246,25 @@ func (r *QuestionQaService) AddQuestionQa(req requests.AddQuestionQa) (bool, err
}
}
// 新增计时设置
if req.IsTurnTimer == 1 {
questionQaTimerDao := dao.QuestionQaTimerDao{}
for _, timer := range req.QuestionQaTimer {
QuestionQaTimer := &model.QuestionQaTimer{
QaId: questionQa.QaId,
QuestionType: timer.QuestionType,
TimerRule: timer.TimerRule,
Duration: timer.Duration,
}
QuestionQaTimer, err := questionQaTimerDao.AddQuestionQaTimer(tx, QuestionQaTimer)
if err != nil {
tx.Rollback()
return false, errors.New("新增失败")
}
}
}
tx.Commit()
return true, nil
}
@ -414,6 +434,11 @@ func (r *QuestionQaService) PutQuestionQa(qaId int64, req requests.PutQuestionQa
}
}
// 计时开关
if req.IsTurnTimer != questionQa.IsTurnTimer {
questionQaData["is_turn_timer"] = req.IsTurnTimer
}
if len(questionQaData) > 0 {
err = questionQaDao.EditQuestionQaById(tx, questionQa.QaId, questionQaData)
if err != nil {
@ -509,6 +534,32 @@ func (r *QuestionQaService) PutQuestionQa(qaId int64, req requests.PutQuestionQa
}
}
// 删除计时规则
questionQaTimerDao := dao.QuestionQaTimerDao{}
err = questionQaTimerDao.DeleteQuestionQaTimerByQaId(tx, questionQa.QaId)
if err != nil {
tx.Rollback()
return false, errors.New(err.Error())
}
// 新增计时规则
if req.IsTurnTimer == 1 {
for _, timer := range req.QuestionQaTimer {
QuestionQaTimer := &model.QuestionQaTimer{
QaId: questionQa.QaId,
QuestionType: timer.QuestionType,
TimerRule: timer.TimerRule,
Duration: timer.Duration,
}
QuestionQaTimer, err := questionQaTimerDao.AddQuestionQaTimer(tx, QuestionQaTimer)
if err != nil {
tx.Rollback()
return false, errors.New("修改失败")
}
}
}
tx.Commit()
return true, nil
}