From d05963c86ac7aafce27cf050a737a79d313f27f2 Mon Sep 17 00:00:00 2001 From: Yun Date: Wed, 10 Jul 2024 17:32:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=BB=98=E8=AE=A4=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 3 +-- go.sum | 8 ++------ options.go | 28 +++++++++++++++++++++++----- response.go | 18 ++++++++++++------ 4 files changed, 38 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 705d259..150153d 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/gin-gonic/gin v1.9.1 - github.com/yuninks/langx v0.0.1 + github.com/yuninks/langx v0.0.3 github.com/zeromicro/go-zero v1.6.4 gorm.io/gorm v1.25.9 ) @@ -58,6 +58,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.0 // indirect google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 2937827..9178737 100644 --- a/go.sum +++ b/go.sum @@ -34,7 +34,6 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -88,8 +87,8 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/yuninks/langx v0.0.1 h1:Ee4vXAVcyXSCms0qtEd/jANYlKO7IIGVTD5NOLdpCJo= -github.com/yuninks/langx v0.0.1/go.mod h1:nAylzjNIjCThhEQSJsIKP8Vhja0aJlcyig+NsNPZLSk= +github.com/yuninks/langx v0.0.3 h1:f+k3x8yz85Sx3LfmmACq7qilInuXxJjCi2wdAhj8E3Q= +github.com/yuninks/langx v0.0.3/go.mod h1:nAylzjNIjCThhEQSJsIKP8Vhja0aJlcyig+NsNPZLSk= github.com/zeromicro/go-zero v1.6.4 h1:GvZXxxwl1Lby/gIHxHwN/ZNmXl1WFJa1DvoVgqgttUs= github.com/zeromicro/go-zero v1.6.4/go.mod h1:dQ39Zoz20/6x/SUhFXyEEg8lWjl+CO3dzg8Je2xG63Q= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= @@ -142,12 +141,9 @@ google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGm google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/gorm v1.25.9 h1:wct0gxZIELDk8+ZqF/MVnHLkA1rvYlBWUMv2EdsK1g8= gorm.io/gorm v1.25.9/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/options.go b/options.go index ca35549..a8f5012 100644 --- a/options.go +++ b/options.go @@ -6,9 +6,11 @@ import ( ) type options struct { - logger Logger - ignoreLog bool - traceId string + logger Logger + ignoreLog bool + traceId string + defaultSuccessCode int + defaultErrorCode int } var op *options = nil @@ -25,12 +27,28 @@ func InitOptions(ops ...Option) { func defaultOptions() *options { return &options{ - logger: &defaultLogger{}, + logger: &defaultLogger{}, + defaultSuccessCode: 200, + defaultErrorCode: 400, } } type Option func(*options) +// 设置默认的成功code +func SetDefaultSuccessCode(code int) Option { + return func(o *options) { + o.defaultSuccessCode = code + } +} + +// 设置默认的失败code +func SetDefaultErrorCode(code int) Option { + return func(o *options) { + o.defaultErrorCode = code + } +} + // 是否需要打印日志 func SetIgnoreLog() Option { return func(o *options) { @@ -45,7 +63,7 @@ func SetLogger(logger Logger) Option { } } -// 是否需要响应trace_id +// 是否需要响应trace_id,&ctx里面的字段 func SetTraceId(traceId string) Option { return func(o *options) { o.traceId = traceId diff --git a/response.go b/response.go index 7d041a1..6b8748b 100644 --- a/response.go +++ b/response.go @@ -56,29 +56,35 @@ func FormatMessage(ctx context.Context, w http.ResponseWriter, message string, f // 成功的响应 func Success(ctx context.Context, w http.ResponseWriter, data interface{}, info ...interface{}) { - ResponseCtx(ctx, w, 200, "请求成功", data, info) + ResponseCtx(ctx, w, op.defaultSuccessCode, "请求成功", data, info) } func SuccessWithPage(ctx context.Context, w http.ResponseWriter, data interface{}, page pagination) { - ResponseCtx(ctx, w, 200, "请求成功", data, page) + ResponseCtx(ctx, w, op.defaultSuccessCode, "请求成功", data, page) } // 失败的响应 func Error(ctx context.Context, w http.ResponseWriter, err error) { - code := 400 + code := op.defaultErrorCode msg := "请求失败" if err != nil { val, ok := err.(*langx.LangError) if ok { - code = val.Code() - msg = err.Error() + if langx.GetDefaultCode() != val.Code() { + code = val.Code() + } } + msg = err.Error() } ResponseCtx(ctx, w, code, msg, "") } func ErrorStr(ctx context.Context, w http.ResponseWriter, msg string) { - code, msg := langx.GetTrans("zh-CN", msg, nil) + msg = langx.GetMsgCtx(ctx, msg) + code := langx.GetCode(msg) + if code == langx.GetDefaultCode() { + code = op.defaultErrorCode + } ResponseCtx(ctx, w, code, msg, "") }