package serializer import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) // Response 基础序列化器 type Response struct { Code int `json:"code"` Data any `json:"data,omitempty"` Msg string `json:"msg"` Error string `json:"error,omitempty"` } // TrackedErrorResponse 有追踪信息的错误响应 type TrackedErrorResponse struct { Response TrackID string `json:"track_id"` } const ( CodeCheckLogin = 401 CodeNoRightErr = 403 CodeDBError = 50001 CodeEncryptError = 50002 CodeParamErr = 40001 ) // CheckLogin 检查登录 func CheckLogin() Response { return Err(CodeCheckLogin, "未登录", nil) } // Err 通用错误处理 func Err(errCode int, msg string, err error) Response { if msg == "" { msg = "未知错误" } res := Response{ Code: errCode, Msg: msg, } if err != nil && gin.Mode() != gin.ReleaseMode { res.Error = fmt.Sprintf("%+v", err) } return res } // DBErr 数据库操作失败 func DBErr(msg string, err error) Response { if msg == "" { msg = "数据库操作失败" } return Err(CodeDBError, msg, err) } // ParamErr 各种参数错误 func ParamErr(msg string, err error) Response { if msg == "" { msg = "参数错误" } return Err(CodeParamErr, msg, err) } // Succ 返回结果 func Succ(msg string, data any) Response { if msg == "" { msg = "操作成功!" } return Response{ Code: http.StatusOK, Msg: msg, Data: data, } }