From 6c51011a0de56e4f5903fa627e1677ecdac8ce03 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 24 Jan 2025 16:00:57 +0800 Subject: [PATCH] 1 --- api/controller/Res.go | 10 +-- api/dao/CaseUserAnswer.go | 144 ++++++++++++++++++++++++++++++++++++ api/model/CaseUserAnswer.go | 38 ++++++++++ 3 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 api/dao/CaseUserAnswer.go create mode 100644 api/model/CaseUserAnswer.go diff --git a/api/controller/Res.go b/api/controller/Res.go index 941a14f..e73f3b6 100644 --- a/api/controller/Res.go +++ b/api/controller/Res.go @@ -175,7 +175,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) { if len(caseUsers) > 0 { recordScoreDao := dao.RecordScoreDao{} caseCommentDao := dao.CaseCommentDao{} - userAnswerRecordDao := dao.UserAnswerRecordDao{} + caseUserAnswerDao := dao.CaseUserAnswerDao{} userDao := dao.UserDao{} projectPlatformWhiteService := service.ProjectPlatformWhiteService{} @@ -201,7 +201,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) { maps["case_id"] = v.CaseId maps["platform_id"] = v.PlatformId maps["user_id"] = v.UserId - userAnswerRecords, _ := userAnswerRecordDao.GetUserAnswerRecordPreloadList(maps) + caseUserAnswers, _ := caseUserAnswerDao.GetCaseUserAnswerPreloadList(maps) // 用时 minutes := v.ReadDuration / 60 @@ -272,9 +272,9 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) { } // 题目 - if len(userAnswerRecords) > 0 { - response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(userAnswerRecords)) - for i2, records := range userAnswerRecords { + if len(caseUserAnswers) > 0 { + response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(caseUserAnswers)) + for i2, records := range caseUserAnswers { questionAnswerDto := &dto.QuestionAnswerDto{ Question: records.CaseItemQuestion.QuestionName, Answer: records.Answer, diff --git a/api/dao/CaseUserAnswer.go b/api/dao/CaseUserAnswer.go new file mode 100644 index 0000000..fc0ca89 --- /dev/null +++ b/api/dao/CaseUserAnswer.go @@ -0,0 +1,144 @@ +package dao + +import ( + "case-open-api/api/model" + "case-open-api/global" + "gorm.io/gorm" + "gorm.io/gorm/clause" +) + +type CaseUserAnswerDao struct { +} + +// GetCaseUserAnswerById 获取数据-id +func (r *CaseUserAnswerDao) GetCaseUserAnswerById(answerId int64) (m *model.CaseUserAnswer, err error) { + err = global.Db.First(&m, answerId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseUserAnswerPreloadById 获取数据-加载全部关联-id +func (r *CaseUserAnswerDao) GetCaseUserAnswerPreloadById(answerId int64) (m *model.CaseUserAnswer, err error) { + err = global.Db.Preload(clause.Associations).First(&m, answerId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteCaseUserAnswer 删除 +func (r *CaseUserAnswerDao) DeleteCaseUserAnswer(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.CaseUserAnswer{}).Error + if err != nil { + return err + } + return nil +} + +// DeleteCaseUserAnswerById 删除-id +func (r *CaseUserAnswerDao) DeleteCaseUserAnswerById(tx *gorm.DB, answerId int64) error { + if err := tx.Delete(&model.CaseUserAnswer{}, answerId).Error; err != nil { + return err + } + return nil +} + +// EditCaseUserAnswer 修改 +func (r *CaseUserAnswerDao) EditCaseUserAnswer(tx *gorm.DB, maps interface{}, data interface{}) error { + err := tx.Model(&model.CaseUserAnswer{}).Where(maps).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// EditCaseUserAnswerById 修改-id +func (r *CaseUserAnswerDao) EditCaseUserAnswerById(tx *gorm.DB, answerId int64, data interface{}) error { + err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetCaseUserAnswerList 获取列表 +func (r *CaseUserAnswerDao) GetCaseUserAnswerList(maps interface{}) (m []*model.CaseUserAnswer, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseUserAnswerPreloadList 获取列表-加载全部关联 +func (r *CaseUserAnswerDao) GetCaseUserAnswerPreloadList(maps interface{}) (m []*model.CaseUserAnswer, err error) { + err = global.Db.Preload(clause.Associations).Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseUserAnswerCount 获取数量 +func (r *CaseUserAnswerDao) GetCaseUserAnswerCount(maps interface{}) (total int64, err error) { + err = global.Db.Model(&model.CaseUserAnswer{}).Where(maps).Count(&total).Error + if err != nil { + return 0, err + } + return total, nil +} + +// GetCaseUserAnswerListRand 获取列表-随机 +func (r *CaseUserAnswerDao) GetCaseUserAnswerListRand(maps interface{}, limit int) (m []*model.CaseUserAnswer, err error) { + err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddCaseUserAnswer 新增 +func (r *CaseUserAnswerDao) AddCaseUserAnswer(tx *gorm.DB, model *model.CaseUserAnswer) (*model.CaseUserAnswer, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetCaseUserAnswer 获取 +func (r *CaseUserAnswerDao) GetCaseUserAnswer(maps interface{}) (m *model.CaseUserAnswer, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseUserAnswerUseTx 获取 +func (r *CaseUserAnswerDao) GetCaseUserAnswerUseTx(tx *gorm.DB, maps interface{}) (m *model.CaseUserAnswer, err error) { + err = tx.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// Inc 自增 +func (r *CaseUserAnswerDao) Inc(tx *gorm.DB, answerId int64, field string, numeral int) error { + err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).UpdateColumn(field, gorm.Expr(field+" + ?", numeral)).Error + if err != nil { + return err + } + return nil +} + +// Dec 自减 +func (r *CaseUserAnswerDao) Dec(tx *gorm.DB, answerId int64, field string, numeral int) error { + err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).UpdateColumn(field, gorm.Expr(field+" - ?", numeral)).Error + if err != nil { + return err + } + return nil +} diff --git a/api/model/CaseUserAnswer.go b/api/model/CaseUserAnswer.go new file mode 100644 index 0000000..e55242d --- /dev/null +++ b/api/model/CaseUserAnswer.go @@ -0,0 +1,38 @@ +package model + +import ( + "case-open-api/global" + "gorm.io/gorm" + "time" +) + +// CaseUserAnswer 用户参与表-答题记录 +type CaseUserAnswer struct { + AnswerId int64 `gorm:"column:answer_id;type:bigint(19);primary_key;comment:主键id" json:"answer_id"` + CaseUserId int64 `gorm:"column:case_user_id;type:bigint(19);comment:用户参与id;NOT NULL" json:"case_user_id"` + PlatformId int64 `gorm:"column:platform_id;type:bigint(19);comment:用户所属平台id;NOT NULL" json:"platform_id"` + QuestionId int64 `gorm:"column:question_id;type:bigint(19);comment:题目id;NOT NULL" json:"question_id"` + UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id;NOT NULL" json:"user_id"` + Answer string `gorm:"column:answer;type:varchar(255);comment:答案" json:"answer"` + IsTrue int `gorm:"column:is_true;type:tinyint(1);default:0;comment:是否正确(0:否 1:是)" json:"is_true"` + Model + CaseItemQuestion *CaseItemQuestion `gorm:"foreignKey:QuestionId;references:question_id" json:"case_item_question"` +} + +func (m *CaseUserAnswer) TableName() string { + return "case_user_answer" +} + +func (m *CaseUserAnswer) BeforeCreate(tx *gorm.DB) error { + if m.AnswerId == 0 { + m.AnswerId = 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 +}