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

115 lines
2.6 KiB
Go

package handler
import (
"exam_registration/internal/model"
"exam_registration/internal/service"
"exam_registration/pkg/response"
"github.com/gin-gonic/gin"
"strconv"
)
type ScoreHandler struct {
scoreService *service.ScoreService
}
func NewScoreHandler() *ScoreHandler {
return &ScoreHandler{
scoreService: &service.ScoreService{},
}
}
// CreateScore 录入成绩
func (h *ScoreHandler) CreateScore(c *gin.Context) {
var score model.ExamScore
if err := c.ShouldBindJSON(&score); err != nil {
response.Error(c, response.BAD_REQUEST, "参数错误")
return
}
if err := h.scoreService.CreateScore(&score); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, score)
}
// BatchCreateScores 批量录入成绩
func (h *ScoreHandler) BatchCreateScores(c *gin.Context) {
var scores []model.ExamScore
if err := c.ShouldBindJSON(&scores); err != nil {
response.Error(c, response.BAD_REQUEST, "参数错误")
return
}
if err := h.scoreService.BatchCreateScores(scores); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, nil)
}
// GetScoreByUserAndExam 查询个人成绩
func (h *ScoreHandler) GetScoreByUserAndExam(c *gin.Context) {
userID, _ := c.Get("user_id")
examID, _ := strconv.ParseUint(c.Param("exam_id"), 10, 64)
score, err := h.scoreService.GetScoreByUserAndExam(userID.(uint64), examID)
if err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, score)
}
// GetScoreList 获取成绩列表(管理员)
func (h *ScoreHandler) GetScoreList(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)
}
scores, total, err := h.scoreService.GetScoreList(examID, page, pageSize)
if err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, gin.H{
"list": scores,
"total": total,
"page": page,
"pageSize": pageSize,
})
}
// PublishScore 发布成绩
func (h *ScoreHandler) PublishScore(c *gin.Context) {
id, _ := strconv.ParseUint(c.Param("id"), 10, 64)
if err := h.scoreService.PublishScore(id); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, nil)
}
// DeleteScore 删除成绩
func (h *ScoreHandler) DeleteScore(c *gin.Context) {
id, _ := strconv.ParseUint(c.Param("id"), 10, 64)
if err := h.scoreService.DeleteScore(id); err != nil {
response.Error(c, response.ERROR, err.Error())
return
}
response.Success(c, nil)
}