DeployHelper/internal/serializer/common.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,
}
}