fix: unify handler response format in user_handler.go
- List/Get/Update/Delete users: standardize to {code, message, data} format
- UpdateUserStatus: standardize to {code, message} format
- handleError: standardize to {code, message} format (was {error: ...})
- All inline bad request errors now use {code: 400, message: ...} consistently
This commit is contained in:
@@ -417,14 +417,13 @@ func handleError(c *gin.Context, err error) {
|
|||||||
// 优先尝试 ApplicationError(内置 HTTP 状态码)
|
// 优先尝试 ApplicationError(内置 HTTP 状态码)
|
||||||
var appErr *apierrors.ApplicationError
|
var appErr *apierrors.ApplicationError
|
||||||
if errors.As(err, &appErr) {
|
if errors.As(err, &appErr) {
|
||||||
c.JSON(int(appErr.Code), gin.H{"error": appErr.Message})
|
c.JSON(int(appErr.Code), gin.H{"code": appErr.Code, "message": appErr.Message})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对普通 errors.New 按关键词推断语义,但只返回通用错误信息给客户端
|
// 对普通 errors.New 按关键词推断语义,但只返回通用错误信息给客户端
|
||||||
msg := err.Error()
|
httpCode := classifyErrorMessage(err.Error())
|
||||||
code := classifyErrorMessage(msg)
|
c.JSON(httpCode, gin.H{"code": httpCode, "message": "服务器内部错误"})
|
||||||
c.JSON(code, gin.H{"error": "服务器内部错误"})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// classifyErrorMessage 通过错误信息关键词推断 HTTP 状态码,避免业务错误被 500 吞掉
|
// classifyErrorMessage 通过错误信息关键词推断 HTTP 状态码,避免业务错误被 500 吞掉
|
||||||
|
|||||||
@@ -102,17 +102,21 @@ func (h *UserHandler) ListUsers(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"users": userResponses,
|
"code": 0,
|
||||||
"total": total,
|
"message": "success",
|
||||||
"offset": offset,
|
"data": gin.H{
|
||||||
"limit": limit,
|
"users": userResponses,
|
||||||
|
"total": total,
|
||||||
|
"offset": offset,
|
||||||
|
"limit": limit,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) GetUser(c *gin.Context) {
|
func (h *UserHandler) GetUser(c *gin.Context) {
|
||||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid user id"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,13 +126,13 @@ func (h *UserHandler) GetUser(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, toUserResponse(user))
|
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success", "data": toUserResponse(user)})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) UpdateUser(c *gin.Context) {
|
func (h *UserHandler) UpdateUser(c *gin.Context) {
|
||||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid user id"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +142,7 @@ func (h *UserHandler) UpdateUser(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,13 +164,13 @@ func (h *UserHandler) UpdateUser(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, toUserResponse(user))
|
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success", "data": toUserResponse(user)})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) DeleteUser(c *gin.Context) {
|
func (h *UserHandler) DeleteUser(c *gin.Context) {
|
||||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid user id"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,13 +179,13 @@ func (h *UserHandler) DeleteUser(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "user deleted"})
|
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success"})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) UpdatePassword(c *gin.Context) {
|
func (h *UserHandler) UpdatePassword(c *gin.Context) {
|
||||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid user id"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,7 +195,7 @@ func (h *UserHandler) UpdatePassword(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,13 +204,13 @@ func (h *UserHandler) UpdatePassword(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "密码修改成功"})
|
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "密码修改成功"})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
||||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid user id"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +219,7 @@ func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +234,7 @@ func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
|||||||
case "disabled", "3":
|
case "disabled", "3":
|
||||||
status = domain.UserStatusDisabled
|
status = domain.UserStatusDisabled
|
||||||
default:
|
default:
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid status"})
|
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid status"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,7 +243,7 @@ func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "status updated"})
|
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success"})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *UserHandler) GetUserRoles(c *gin.Context) {
|
func (h *UserHandler) GetUserRoles(c *gin.Context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user