新增了飞花令数量1

This commit is contained in:
wucongxing8150 2024-11-12 10:41:12 +08:00
parent 472f25fb61
commit 51af306add
6 changed files with 207 additions and 2 deletions

107
api/dao/QuestionQaTimer.go Normal file
View File

@ -0,0 +1,107 @@
package dao
import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"knowledge/api/model"
"knowledge/global"
)
type QuestionQaTimerDao struct {
}
// GetQuestionQaTimerById 获取数据-id
func (r *QuestionQaTimerDao) GetQuestionQaTimerById(TimerId int64) (m *model.QuestionQaTimer, err error) {
err = global.Db.First(&m, TimerId).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetQuestionQaTimerListByQaId 获取数据-QaId
func (r *QuestionQaTimerDao) GetQuestionQaTimerListByQaId(qaId int64) (m []*model.QuestionQaTimer, err error) {
err = global.Db.Where("qa_id = ?", qaId).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// DeleteQuestionQaTimer 删除
func (r *QuestionQaTimerDao) DeleteQuestionQaTimer(tx *gorm.DB, maps interface{}) error {
err := tx.Where(maps).Delete(&model.QuestionQaTimer{}).Error
if err != nil {
return err
}
return nil
}
// DeleteQuestionQaTimerById 删除-Id
func (r *QuestionQaTimerDao) DeleteQuestionQaTimerById(tx *gorm.DB, itemId int64) error {
if err := tx.Delete(&model.QuestionQaTimer{}, itemId).Error; err != nil {
return err
}
return nil
}
// DeleteQuestionQaTimerByQaId 删除-QaId
func (r *QuestionQaTimerDao) DeleteQuestionQaTimerByQaId(tx *gorm.DB, qaId int64) error {
if err := tx.Where("qa_id = ?", qaId).Delete(&model.QuestionQaTimer{}).Error; err != nil {
return err
}
return nil
}
// EditQuestionQaTimer 修改
func (r *QuestionQaTimerDao) EditQuestionQaTimer(tx *gorm.DB, maps interface{}, data interface{}) error {
err := tx.Model(&model.QuestionQaTimer{}).Where(maps).Updates(data).Error
if err != nil {
return err
}
return nil
}
// EditQuestionQaTimerById 修改-id
func (r *QuestionQaTimerDao) EditQuestionQaTimerById(tx *gorm.DB, TimerId int64, data interface{}) error {
err := tx.Model(&model.QuestionQaTimer{}).Where("timer_id = ?", TimerId).Updates(data).Error
if err != nil {
return err
}
return nil
}
// GetQuestionQaTimerList 获取列表
func (r *QuestionQaTimerDao) GetQuestionQaTimerList(maps interface{}) (m []*model.QuestionQaTimer, err error) {
err = global.Db.Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetQuestionQaTimerPreloadList 获取列表-加载全部关联
func (r *QuestionQaTimerDao) GetQuestionQaTimerPreloadList(maps interface{}) (m []*model.QuestionQaTimer, err error) {
err = global.Db.Preload(clause.Associations).Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddQuestionQaTimer 新增
func (r *QuestionQaTimerDao) AddQuestionQaTimer(tx *gorm.DB, model *model.QuestionQaTimer) (*model.QuestionQaTimer, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}
// GetQuestionQaTimer 获取
func (r *QuestionQaTimerDao) GetQuestionQaTimer(maps interface{}) (m *model.QuestionQaTimer, err error) {
err = global.Db.Where(maps).First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}

View File

@ -18,6 +18,7 @@ type QuestionQaDto struct {
RoundNum *int `json:"round_num"` // 轮次数量当题库类型为3时存在
QaRuleContent string `json:"qa_rule_content"` // 规则解释
QaDisplayType int `json:"qa_display_type"` // 展示类型1:常规 2:飞花令)
IsTurnTimer int `json:"is_turn_timer"` // 是否开启计时0:否 1:是)
QaExpireTime *model.LocalTime `json:"qa_expire_time"` // 过期时间
QaShareId string `json:"qa_share_id"` // 分享标识
QaPassword string `json:"qa_password"` // 分享密码
@ -28,6 +29,7 @@ type QuestionQaDto struct {
TokenQuestionContent []*TokenQuestionContentDto `json:"token_question_content"` // 飞花令题目数量规则当题库类型为2、3时存在。2表示飞花令后固定题目数量3表示飞花令后单个类型题目数量
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
QuestionQaTimer []*QuestionQaTimerDto `json:"question_qa_timer"` // 计时设置
}
// QuestionQaBaseTokenItem 问答题库-飞花令明细

View File

@ -0,0 +1,54 @@
package dto
import (
"fmt"
"knowledge/api/model"
)
type QuestionQaTimerDto struct {
TimerId string `json:"timer_id"` // 主键id
QaId string `json:"qa_id"` // 知识问答id
QuestionType int `json:"question_type"` // 题目类型(1:单选 2:多选 3:问答 4:判断)
TimerRule int `json:"timer_rule"` // 计时规则1:正计时 2:倒计时)
Duration int `json:"duration"` // 时长(秒)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
}
// GetQuestionQaTimerDto 详情
func GetQuestionQaTimerDto(m *model.QuestionQaTimer) *QuestionQaTimerDto {
return &QuestionQaTimerDto{
TimerId: fmt.Sprintf("%d", m.TimerId),
QaId: fmt.Sprintf("%d", m.QaId),
QuestionType: m.QuestionType,
TimerRule: m.TimerRule,
Duration: m.Duration,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
// GetQuestionQaTimerListDto 列表
func GetQuestionQaTimerListDto(m []*model.QuestionQaTimer) []*QuestionQaTimerDto {
// 处理返回值
responses := make([]*QuestionQaTimerDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &QuestionQaTimerDto{
TimerId: fmt.Sprintf("%d", v.TimerId),
QaId: fmt.Sprintf("%d", v.QaId),
QuestionType: v.QuestionType,
TimerRule: v.TimerRule,
Duration: v.Duration,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}

View File

@ -17,6 +17,7 @@ type QuestionQa struct {
RoundNum *int `gorm:"column:round_num;type:int(11);comment:轮次数量当题库类型为3时存在" json:"round_num"`
QaRuleContent string `gorm:"column:qa_rule_content;type:text;comment:规则解释" json:"qa_rule_content"`
QaDisplayType int `gorm:"column:qa_display_type;type:tinyint(1);default:1;comment:展示类型1:常规 2:飞花令)" json:"qa_display_type"`
IsTurnTimer int `gorm:"column:is_turn_timer;type:tinyint(1);default:0;comment:是否开启计时0:否 1:是)" json:"is_turn_timer"`
QaExpireTime LocalTime `gorm:"column:qa_expire_time;type:datetime;comment:过期时间" json:"qa_expire_time"`
QaShareId string `gorm:"column:qa_share_id;type:varchar(255);comment:分享标识" json:"qa_share_id"`
QaPassword string `gorm:"column:qa_password;type:varchar(255);comment:分享密码" json:"qa_password"`
@ -25,6 +26,7 @@ type QuestionQa struct {
ItemContent string `gorm:"column:item_content;type:text;comment:明细选题json" json:"item_content"`
TokenQuestionContent string `gorm:"column:token_question_content;type:text;comment:飞花令题目数量规则当题库类型为2、3时存在。2表示飞花令后固定题目数量3表示飞花令后单个类型题目数量" json:"token_question_content"`
Model
QuestionQaTimer []*QuestionQaTimer `gorm:"foreignKey:QaId;references:qa_id" json:"question_qa_timer"`
}
func (m *QuestionQa) TableName() string {

View File

@ -0,0 +1,35 @@
package model
import (
"gorm.io/gorm"
"knowledge/global"
"time"
)
// QuestionQaTimer 知识问答-计时设置
type QuestionQaTimer struct {
TimerId int64 `gorm:"column:timer_id;type:bigint(19);primary_key;comment:主键id" json:"timer_id"`
QaId int64 `gorm:"column:qa_id;type:bigint(19);comment:知识问答id;NOT NULL" json:"qa_id"`
QuestionType int `gorm:"column:question_type;type:tinyint(1);default:1;comment:题目类型(1:单选 2:多选 3:问答 4:判断)" json:"question_type"`
TimerRule int `gorm:"column:timer_rule;type:tinyint(1);default:1;comment:计时规则1:正计时 2:倒计时)" json:"timer_rule"`
Duration int `gorm:"column:duration;type:int(1);default:1;comment:时长(秒)" json:"duration"`
Model
}
func (m *QuestionQaTimer) TableName() string {
return "kb_question_qa_timer"
}
func (m *QuestionQaTimer) BeforeCreate(tx *gorm.DB) error {
if m.TimerId == 0 {
m.TimerId = global.Snowflake.Generate().Int64()
}
m.CreatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("CreatedAt", m.CreatedAt)
m.UpdatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt)
return nil
}

View File

@ -333,6 +333,7 @@ func (r *QuestionQaService) PutQuestionQa(qaId int64, req requests.PutQuestionQa
return false, err
}
fmt.Println(1111)
// 题目数量
if qaQuantity != questionQa.QaQuantity {
if req.Action == 1 {
@ -764,7 +765,7 @@ func (r *QuestionQaService) CheckPutQaQuestionQuantity(req requests.PutQuestionQ
itemQuantity = 0
for _, item := range req.QuestionQaItem {
if content.QuestionType == item.QuestionType {
itemQuantity = item.Quantity
itemQuantity = itemQuantity + item.Quantity
}
}
@ -795,12 +796,16 @@ func (r *QuestionQaService) CheckPutQaQuestionQuantity(req requests.PutQuestionQ
itemQuantity = 0
for _, item := range req.QuestionQaItem {
if content.QuestionType == item.QuestionType {
itemQuantity = item.Quantity
itemQuantity = itemQuantity + item.Quantity
}
}
quantity := content.Quantity * *req.TokenNum * *req.RoundNum
fmt.Println(utils.QuestionType(content.QuestionType))
fmt.Println(quantity)
fmt.Println(req.QuestionQaItem)
fmt.Println(itemQuantity)
if quantity > itemQuantity {
return qaQuantity, errors.New(utils.QuestionType(content.QuestionType) + "数量不足")
}