Refactor backend APIs to RESTful route patterns.
Align group and conversation handlers/services with path-based endpoints, and unify response/service error handling for related modules. Made-with: Cursor
This commit is contained in:
@@ -4,6 +4,8 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"carrot_bbs/internal/service"
|
||||
)
|
||||
|
||||
// Response 统一响应结构
|
||||
@@ -115,3 +117,46 @@ func Paginated(c *gin.Context, list interface{}, total int64, page, pageSize int
|
||||
TotalPages: totalPages,
|
||||
})
|
||||
}
|
||||
|
||||
// HandleServiceError 统一处理 Service 错误
|
||||
// 如果 err 是 *service.ServiceError,返回对应的业务错误码和消息
|
||||
// 如果 err 是其他错误,返回 false(调用方应处理通用错误)
|
||||
// 返回 true 表示错误已处理,false 表示需要调用方继续处理
|
||||
func HandleServiceError(c *gin.Context, err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
if se, ok := err.(*service.ServiceError); ok {
|
||||
ErrorWithStatusCode(c, statusCodeFromCode(se.Code), se.Code, se.Message)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// HandleError 统一处理错误(带默认消息)
|
||||
// 如果 err 是 *service.ServiceError,返回对应的业务错误码和消息
|
||||
// 如果 err 是其他错误,返回 InternalServerError 并使用 defaultMessage
|
||||
func HandleError(c *gin.Context, err error, defaultMessage string) {
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
if se, ok := err.(*service.ServiceError); ok {
|
||||
ErrorWithStatusCode(c, statusCodeFromCode(se.Code), se.Code, se.Message)
|
||||
return
|
||||
}
|
||||
InternalServerError(c, defaultMessage)
|
||||
}
|
||||
|
||||
// statusCodeFromCode 根据业务错误码获取 HTTP 状态码
|
||||
func statusCodeFromCode(code int) int {
|
||||
switch {
|
||||
case code >= 200 && code < 300:
|
||||
return http.StatusOK
|
||||
case code >= 400 && code < 500:
|
||||
return code
|
||||
case code >= 500:
|
||||
return code
|
||||
default:
|
||||
return http.StatusBadRequest
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user