115 lines
2.6 KiB
Go
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)
|
|
}
|