Refactor error handling in system and trace controllers

- Updated error response codes for various validation errors from 400 to 422 to better reflect the nature of the errors.
- Changed error messages for empty parameters (e.g., userId, menuId, roleId) to use a consistent error code format.
- Improved error handling in the IPerf, Ping, and WS controllers to provide more informative error messages.
- Ensured that all controllers return appropriate error messages when binding JSON or query parameters fails.
This commit is contained in:
TsMask
2025-04-27 16:38:19 +08:00
parent 56991a0b49
commit 80d612c56c
67 changed files with 424 additions and 410 deletions

View File

@@ -11,6 +11,7 @@ import (
"be.ems/src/framework/i18n"
"be.ems/src/framework/reqctx"
"be.ems/src/framework/resp"
"github.com/gin-gonic/gin"
)
@@ -31,10 +32,8 @@ func (s CommonController) Hash(c *gin.Context) {
Str string `json:"str" binding:"required"`
}
if err := c.ShouldBindJSON(&body); err != nil {
c.JSON(200, gin.H{
"code": 400,
"msg": "参数错误",
})
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}

View File

@@ -34,13 +34,13 @@ func (s *FileController) Download(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
filePath := c.Param("filePath")
if len(filePath) < 8 {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
c.JSON(422, resp.CodeMsg(422002, i18n.TKey(language, "app.common.err400")))
return
}
// base64解析出地址
decodedBytes, err := base64.StdEncoding.DecodeString(filePath)
if err != nil {
c.JSON(400, resp.CodeMsg(400, err.Error()))
c.JSON(422, resp.CodeMsg(422002, err.Error()))
return
}
routerPath := string(decodedBytes)
@@ -87,14 +87,14 @@ func (s *FileController) Upload(c *gin.Context) {
// 上传的文件
formFile, err := c.FormFile("file")
if err != nil {
c.JSON(400, resp.CodeMsg(40010, "bind err: file is empty"))
c.JSON(422, resp.CodeMsg(422002, "bind err: file is empty"))
return
}
// 子路径需要在指定范围内
subPath := c.PostForm("subPath")
_, ok := constants.UPLOAD_SUB_PATH[subPath]
if subPath != "" && !ok {
c.JSON(400, resp.CodeMsg(40010, "bind err: subPath not in range"))
c.JSON(422, resp.CodeMsg(422002, "bind err: subPath not in range"))
return
}
if subPath == "" {
@@ -136,7 +136,7 @@ func (s *FileController) ChunkCheck(c *gin.Context) {
}
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
@@ -170,12 +170,12 @@ func (s *FileController) ChunkMerge(c *gin.Context) {
}
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
// 子路径需要在指定范围内
if _, ok := constants.UPLOAD_SUB_PATH[body.SubPath]; body.SubPath != "" && !ok {
c.JSON(400, resp.CodeMsg(40010, "bind err: subPath not in range"))
c.JSON(422, resp.CodeMsg(422002, "bind err: subPath not in range"))
return
}
if body.SubPath == "" {
@@ -218,13 +218,13 @@ func (s *FileController) ChunkUpload(c *gin.Context) {
// 切片唯一标识
identifier := c.PostForm("identifier")
if index == "" || identifier == "" {
c.JSON(400, resp.CodeMsg(40010, "bind err: index and identifier must be set"))
c.JSON(422, resp.CodeMsg(422002, "bind err: index and identifier must be set"))
return
}
// 上传的文件
formFile, err := c.FormFile("file")
if err != nil {
c.JSON(400, resp.CodeMsg(40010, "bind err: file is empty"))
c.JSON(422, resp.CodeMsg(422002, "bind err: file is empty"))
return
}
@@ -262,7 +262,7 @@ func (s *FileController) List(c *gin.Context) {
}
if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
@@ -322,7 +322,7 @@ func (s *FileController) File(c *gin.Context) {
}
if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
@@ -373,7 +373,7 @@ func (s *FileController) Remove(c *gin.Context) {
}
if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
@@ -418,7 +418,7 @@ func (s *FileController) TransferStaticFile(c *gin.Context) {
}
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(40422, errMsgs))
c.JSON(422, resp.CodeMsg(422001, errMsgs))
return
}
@@ -429,7 +429,7 @@ func (s *FileController) TransferStaticFile(c *gin.Context) {
static := config.Get("staticFile.default").(map[string]any)
dir, err := filepath.Abs(static["dir"].(string))
if err != nil {
c.JSON(400, resp.CodeMsg(400, err.Error()))
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
@@ -439,7 +439,7 @@ func (s *FileController) TransferStaticFile(c *gin.Context) {
err = file.CopyUploadFile(body.UploadPath, newFile)
if err != nil {
c.JSON(400, resp.CodeMsg(400, err.Error()))
c.JSON(200, resp.ErrMsg(err.Error()))
return
}