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 }