107 lines
2.4 KiB
Go
107 lines
2.4 KiB
Go
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)
|
|
}
|