package service import ( "time" "github.com/sundynix/pets-be/internal/model" ) // ReminderInput 提醒入参 type ReminderInput struct { Type string Title string NextDueDate *time.Time Frequency string } // ListReminders 宠物的提醒列表 func (s *Service) ListReminders(userID, petID uint) ([]model.Reminder, error) { if _, err := s.ownedPet(userID, petID); err != nil { return nil, err } var reminders []model.Reminder err := s.db.Where("pet_id = ?", petID).Order("id asc").Find(&reminders).Error return reminders, err } // CreateReminder 新增提醒 func (s *Service) CreateReminder(userID, petID uint, in ReminderInput) (*model.Reminder, error) { if _, err := s.ownedPet(userID, petID); err != nil { return nil, err } r := model.Reminder{ PetID: petID, UserID: userID, Type: in.Type, Title: in.Title, NextDueDate: in.NextDueDate, Frequency: in.Frequency, } if err := s.db.Create(&r).Error; err != nil { return nil, err } return &r, nil } // UpdateReminder 更新提醒 func (s *Service) UpdateReminder(userID, reminderID uint, fields map[string]any) (*model.Reminder, error) { var r model.Reminder if err := s.db.Where("id = ? AND user_id = ?", reminderID, userID).First(&r).Error; err != nil { return nil, ErrNotFound } if err := s.db.Model(&r).Updates(fields).Error; err != nil { return nil, err } return &r, nil } // DeleteReminder 删除提醒 func (s *Service) DeleteReminder(userID, reminderID uint) error { res := s.db.Where("id = ? AND user_id = ?", reminderID, userID).Delete(&model.Reminder{}) if res.Error != nil { return res.Error } if res.RowsAffected == 0 { return ErrNotFound } return nil }