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/handler/exam_handler.go
2026-03-20 21:41:00 +08:00

101 lines
2.2 KiB
Go

package handler
import (
"exam_registration/internal/model"
"exam_registration/internal/service"
"exam_registration/pkg/response"
"github.com/gin-gonic/gin"
"strconv"
)
type ExamHandler struct {
examService *service.ExamService
}
func NewExamHandler() *ExamHandler {
return &ExamHandler{
examService: &service.ExamService{},
}
}
// CreateExam 创建考试
func (h *ExamHandler) CreateExam(c *gin.Context) {
var exam model.Exam
if err := c.ShouldBindJSON(&exam); err != nil {
response.Error(c, response.BAD_REQUEST, "参数错误")
return
}
userID, _ := c.Get("user_id")
exam.CreatorID = userID.(uint64)
if err := h.examService.CreateExam(&exam); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, exam)
}
// GetExamByID 获取考试详情
func (h *ExamHandler) GetExamByID(c *gin.Context) {
id, _ := strconv.ParseUint(c.Param("id"), 10, 64)
exam, err := h.examService.GetExamByID(id)
if err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, exam)
}
// GetExamList 获取考试列表
func (h *ExamHandler) GetExamList(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
exams, total, err := h.examService.GetExamList(page, pageSize)
if err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, gin.H{
"list": exams,
"total": total,
"page": page,
"pageSize": pageSize,
})
}
// UpdateExam 更新考试
func (h *ExamHandler) UpdateExam(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.examService.UpdateExam(id, updates); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, nil)
}
// DeleteExam 删除考试
func (h *ExamHandler) DeleteExam(c *gin.Context) {
id, _ := strconv.ParseUint(c.Param("id"), 10, 64)
if err := h.examService.DeleteExam(id); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, nil)
}