This repository has been archived on 2026-04-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Exam_registration/internal/service/notice_service.go
2026-03-20 21:41:00 +08:00

51 lines
1.3 KiB
Go

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(&notice, id).Error; err != nil {
return nil, errors.New("通知不存在")
}
return &notice, 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(&notices).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
}