package handler import ( "exam_registration/internal/model" "exam_registration/internal/service" "exam_registration/pkg/response" "github.com/gin-gonic/gin" "strconv" ) type NoticeHandler struct { noticeService *service.NoticeService } func NewNoticeHandler() *NoticeHandler { return &NoticeHandler{ noticeService: &service.NoticeService{}, } } // CreateNotice 创建通知 func (h *NoticeHandler) CreateNotice(c *gin.Context) { var notice model.ExamNotice if err := c.ShouldBindJSON(¬ice); err != nil { response.Error(c, response.BAD_REQUEST, "参数错误") return } userID, _ := c.Get("user_id") notice.PublisherID = userID.(uint64) if err := h.noticeService.CreateNotice(¬ice); err != nil { response.Error(c, response.ERROR, err.Error()) return } response.Success(c, notice) } // GetNoticeByID 获取通知详情 func (h *NoticeHandler) GetNoticeByID(c *gin.Context) { id, _ := strconv.ParseUint(c.Param("id"), 10, 64) notice, err := h.noticeService.GetNoticeByID(id) if err != nil { response.Error(c, response.ERROR, err.Error()) return } response.Success(c, notice) } // GetNoticeList 获取通知列表 func (h *NoticeHandler) GetNoticeList(c *gin.Context) { examIDStr := c.Query("exam_id") page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10")) var examID int if examIDStr != "" { examID, _ = strconv.Atoi(examIDStr) } notices, total, err := h.noticeService.GetNoticeList(examID, page, pageSize) if err != nil { response.Error(c, response.ERROR, err.Error()) return } response.Success(c, gin.H{ "list": notices, "total": total, "page": page, "pageSize": pageSize, }) } // UpdateNotice 更新通知 func (h *NoticeHandler) UpdateNotice(c *gin.Context) { id, _ := strconv.ParseUint(c.Param("id"), 10, 64) var updates map[string]interface{} if err := c.ShouldBindJSON(&updates); err != nil { response.Error(c, response.BAD_REQUEST, "参数错误") return } if err := h.noticeService.UpdateNotice(id, updates); err != nil { response.Error(c, response.ERROR, err.Error()) return } response.Success(c, nil) } // DeleteNotice 删除通知 func (h *NoticeHandler) DeleteNotice(c *gin.Context) { id, _ := strconv.ParseUint(c.Param("id"), 10, 64) if err := h.noticeService.DeleteNotice(id); err != nil { response.Error(c, response.ERROR, err.Error()) return } response.Success(c, nil) }