package service import ( "exam_registration/internal/dao" "exam_registration/internal/model" "errors" "time" ) type NoticeService struct{} func (s *NoticeService) CreateNotice(notice *model.ExamNotice) error { notice.PublishTime = time.Now() return dao.DB.Create(notice).Error } func (s *NoticeService) GetNoticeByID(id uint64) (*model.ExamNotice, error) { var notice model.ExamNotice if err := dao.DB.Preload("Exam").First(¬ice, id).Error; err != nil { return nil, errors.New("通知不存在") } return ¬ice, nil } func (s *NoticeService) GetNoticeList(examID, page, pageSize int) ([]model.ExamNotice, int64, error) { var notices []model.ExamNotice var total int64 offset := (page - 1) * pageSize query := dao.DB.Model(&model.ExamNotice{}).Preload("Exam") if examID > 0 { query = query.Where("exam_id = ?", examID) } if err := query.Count(&total).Error; err != nil { return nil, 0, err } err := query.Offset(offset).Limit(pageSize).Order("id DESC").Find(¬ices).Error return notices, total, err } func (s *NoticeService) UpdateNotice(id uint64, updates map[string]interface{}) error { return dao.DB.Model(&model.ExamNotice{}).Where("id = ?", id).Updates(updates).Error } func (s *NoticeService) DeleteNotice(id uint64) error { return dao.DB.Delete(&model.ExamNotice{}, id).Error }