package service import ( "errors" "strings" "github.com/sundynix/pets-be/internal/model" ) // CreateFeedback 提交意见反馈 func (s *Service) CreateFeedback(userID, content, contact string) (*model.Feedback, error) { content = strings.TrimSpace(content) if content == "" { return nil, errors.New("反馈内容不能为空") } if len([]rune(content)) > 1000 { return nil, errors.New("反馈内容太长了") } name := "" var u model.User if err := s.db.Select("nickname").First(&u, "id = ?", userID).Error; err == nil { name = u.Nickname } f := model.Feedback{UserID: userID, Nickname: name, Content: content, Contact: strings.TrimSpace(contact)} if err := s.db.Create(&f).Error; err != nil { return nil, err } return &f, nil } // ListFeedbackAdmin 后台反馈分页 func (s *Service) ListFeedbackAdmin(offset, limit int) ([]model.Feedback, int64, error) { var total int64 s.db.Model(&model.Feedback{}).Count(&total) var list []model.Feedback err := s.db.Order("id desc").Offset(offset).Limit(limit).Find(&list).Error return list, total, err } // SetFeedbackHandled 标记反馈已处理 func (s *Service) SetFeedbackHandled(id string, handled bool) error { res := s.db.Model(&model.Feedback{}).Where("id = ?", id).Update("handled", handled) if res.Error != nil { return res.Error } if res.RowsAffected == 0 { return ErrNotFound } return nil }