79 lines
1.4 KiB
Go
79 lines
1.4 KiB
Go
|
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,
|
||
|
}
|
||
|
}
|