package controllers import ( "errors" "main/logic" "main/models" "main/pkg/vt" "main/utils" "github.com/gin-gonic/gin" "github.com/go-playground/validator/v10" "go.uber.org/zap" ) func GetAllStudentInfoHandler(c *gin.Context) { info, err := logic.GetAllStudentInfoLogic() if err != nil { zap.L().Error("Get all student info error", zap.Error(err)) if err == utils.ErrorStuInfoEmpty { utils.ResponseError(c, utils.CodeStudentInfoEmpty) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, info) } func GetOneRandomStudentInfoHandler(c *gin.Context) { info, err := logic.GetOneRandomStudentInfoLogic() if err != nil { zap.L().Error("Get student info error", zap.Error(err)) if err == utils.ErrorStuInfoEmpty { utils.ResponseError(c, utils.CodeStudentInfoEmpty) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, info) } func GetOneStudentInfoAccordScoreHandler(c *gin.Context) { info, err := logic.GetOneStudentInfoAccordScoreLogic() if err != nil { zap.L().Error("Get one student info error", zap.Error(err)) if err == utils.ErrorStuInfoEmpty { utils.ResponseError(c, utils.CodeStudentInfoEmpty) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, info) } func GetNStudentInfoAccordScoreHandler(c *gin.Context) { p := new(models.ParamNum) if err := c.ShouldBindJSON(p); err != nil { zap.L().Error("Get N student info with invalid param", zap.Error(err)) errs, ok := err.(validator.ValidationErrors) if !ok { utils.ResponseError(c, utils.CodeInvalidParam) return } utils.ResponseErrorWithMsg(c, utils.CodeInvalidParam, vt.RemoveTopStruct(errs.Translate(vt.Trans))) return } info, err := logic.GetNStudentInfoAccordScoreLogic(p) if err != nil { zap.L().Error("Get n student info error", zap.Error(err)) if err == utils.ErrorStuInfoEmpty { utils.ResponseError(c, utils.CodeStudentInfoEmpty) return } if err == utils.ErrorBeyondNum { utils.ResponseError(c, utils.CodeTooMuchNum) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, info) } func GetTargetStudentInfoHandler(c *gin.Context) { p := new(models.ParamUser) if err := c.ShouldBindJSON(p); err != nil { zap.L().Error("Get Target student info with invalid param", zap.Error(err)) errs, ok := err.(validator.ValidationErrors) if !ok { utils.ResponseError(c, utils.CodeInvalidParam) return } utils.ResponseErrorWithMsg(c, utils.CodeInvalidParam, vt.RemoveTopStruct(errs.Translate(vt.Trans))) return } back, err := logic.GetTargetStudentInfoLogic(p) if err != nil { zap.L().Error("Get Target failed", zap.Error(err)) if errors.Is(err, utils.ErrorInvalidStuId) { utils.ResponseError(c, utils.CodeInvalidParam) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, back) } func ChangeStuScoreHandler(c *gin.Context) { p := new(models.ParamUser) if err := c.ShouldBindJSON(p); err != nil { zap.L().Error("Change student score with invalid param", zap.Error(err)) errs, ok := err.(validator.ValidationErrors) if !ok { utils.ResponseError(c, utils.CodeInvalidParam) return } utils.ResponseErrorWithMsg(c, utils.CodeInvalidParam, vt.RemoveTopStruct(errs.Translate(vt.Trans))) return } back, err := logic.ChangeStuScoreLogic(p) if err != nil { zap.L().Error("Change score failed", zap.Error(err)) if errors.Is(err, utils.ErrorInvalidStuId) { utils.ResponseError(c, utils.CodeInvalidParam) return } utils.ResponseError(c, utils.CodeServerBusy) return } utils.ResponseSuccess(c, back) }