healthapp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

71 lines
2.5 KiB

package impl
import (
"health-ai/internal/database"
"health-ai/internal/model"
)
type ConstitutionRepository struct{}
func NewConstitutionRepository() *ConstitutionRepository {
return &ConstitutionRepository{}
}
// GetQuestions 获取所有问卷题目
func (r *ConstitutionRepository) GetQuestions() ([]model.QuestionBank, error) {
var questions []model.QuestionBank
err := database.DB.Order("constitution_type, order_num").Find(&questions).Error
return questions, err
}
// GetQuestionsByType 获取指定体质类型的问题
func (r *ConstitutionRepository) GetQuestionsByType(constitutionType string) ([]model.QuestionBank, error) {
var questions []model.QuestionBank
err := database.DB.Where("constitution_type = ?", constitutionType).Order("order_num").Find(&questions).Error
return questions, err
}
// CreateAssessment 创建体质测评记录
func (r *ConstitutionRepository) CreateAssessment(assessment *model.ConstitutionAssessment) error {
return database.DB.Create(assessment).Error
}
// GetLatestAssessment 获取用户最新的体质测评结果
func (r *ConstitutionRepository) GetLatestAssessment(userID uint) (*model.ConstitutionAssessment, error) {
var assessment model.ConstitutionAssessment
err := database.DB.Where("user_id = ?", userID).Order("assessed_at DESC").First(&assessment).Error
return &assessment, err
}
// GetAssessmentHistory 获取用户的体质测评历史
func (r *ConstitutionRepository) GetAssessmentHistory(userID uint, limit int) ([]model.ConstitutionAssessment, error) {
var assessments []model.ConstitutionAssessment
query := database.DB.Where("user_id = ?", userID).Order("assessed_at DESC")
if limit > 0 {
query = query.Limit(limit)
}
err := query.Find(&assessments).Error
return assessments, err
}
// GetAssessmentByID 根据ID获取测评记录
func (r *ConstitutionRepository) GetAssessmentByID(id uint) (*model.ConstitutionAssessment, error) {
var assessment model.ConstitutionAssessment
err := database.DB.First(&assessment, id).Error
return &assessment, err
}
// CreateAnswers 批量创建问卷答案
func (r *ConstitutionRepository) CreateAnswers(answers []model.AssessmentAnswer) error {
if len(answers) == 0 {
return nil
}
return database.DB.Create(&answers).Error
}
// GetAnswersByAssessmentID 获取测评的所有答案
func (r *ConstitutionRepository) GetAnswersByAssessmentID(assessmentID uint) ([]model.AssessmentAnswer, error) {
var answers []model.AssessmentAnswer
err := database.DB.Where("assessment_id = ?", assessmentID).Find(&answers).Error
return answers, err
}