63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"ai_xhs/database"
|
||
|
|
"ai_xhs/models"
|
||
|
|
)
|
||
|
|
|
||
|
|
// FeedbackService 反馈服务
|
||
|
|
type FeedbackService struct{}
|
||
|
|
|
||
|
|
// NewFeedbackService 创建反馈服务
|
||
|
|
func NewFeedbackService() *FeedbackService {
|
||
|
|
return &FeedbackService{}
|
||
|
|
}
|
||
|
|
|
||
|
|
// CreateFeedback 创建反馈
|
||
|
|
func (fs *FeedbackService) CreateFeedback(feedback *models.Feedback) error {
|
||
|
|
return database.DB.Create(feedback).Error
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetFeedbackList 获取反馈列表
|
||
|
|
func (fs *FeedbackService) GetFeedbackList(userID, page, pageSize int, feedbackType, status string) ([]models.Feedback, int64, error) {
|
||
|
|
var feedbacks []models.Feedback
|
||
|
|
var total int64
|
||
|
|
|
||
|
|
query := database.DB.Model(&models.Feedback{}).Where("created_user_id = ?", userID)
|
||
|
|
|
||
|
|
// 筛选条件
|
||
|
|
if feedbackType != "" {
|
||
|
|
query = query.Where("feedback_type = ?", feedbackType)
|
||
|
|
}
|
||
|
|
if status != "" {
|
||
|
|
query = query.Where("status = ?", status)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 获取总数
|
||
|
|
if err := query.Count(&total).Error; err != nil {
|
||
|
|
return nil, 0, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// 分页查询
|
||
|
|
offset := (page - 1) * pageSize
|
||
|
|
if err := query.Order("created_at DESC").Offset(offset).Limit(pageSize).Find(&feedbacks).Error; err != nil {
|
||
|
|
return nil, 0, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return feedbacks, total, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetFeedbackByID 根据ID获取反馈
|
||
|
|
func (fs *FeedbackService) GetFeedbackByID(id int) (*models.Feedback, error) {
|
||
|
|
var feedback models.Feedback
|
||
|
|
if err := database.DB.First(&feedback, id).Error; err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return &feedback, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// UpdateFeedbackStatus 更新反馈状态(管理员使用)
|
||
|
|
func (fs *FeedbackService) UpdateFeedbackStatus(id int, status string) error {
|
||
|
|
return database.DB.Model(&models.Feedback{}).Where("id = ?", id).Update("status", status).Error
|
||
|
|
}
|