增加社区列表接口,任务相关接口修改
This commit is contained in:
@@ -2,24 +2,45 @@ package errs
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var debug bool
|
||||
|
||||
func init() {
|
||||
if strings.ToLower(os.Getenv("VANS_API_DEBUG")) == "on" {
|
||||
debug = true
|
||||
}
|
||||
httpx.SetErrorHandlerCtx(ErrorHandleCtx)
|
||||
httpx.SetErrorHandler(ErrorHandle)
|
||||
httpx.SetOkHandler(OkHandle)
|
||||
}
|
||||
|
||||
func SetDebug(d bool) {
|
||||
debug = d
|
||||
func OkHandle(ctx context.Context, v any) any {
|
||||
return map[string]any{
|
||||
"status": map[string]any{
|
||||
"code": ErrSucceed,
|
||||
"msg": "ok",
|
||||
},
|
||||
"data": v,
|
||||
}
|
||||
}
|
||||
|
||||
func WithUnauthorizedCallback() rest.RunOption {
|
||||
return rest.WithUnauthorizedCallback(func(w http.ResponseWriter, r *http.Request, err error) {
|
||||
body := map[string]any{
|
||||
"status": map[string]any{
|
||||
"code": ErrUnauthorized,
|
||||
"msg": err.Error(),
|
||||
},
|
||||
}
|
||||
data, _ := json.Marshal(body)
|
||||
w.Header().Set(httpx.ContentType, "application/json; charset=utf-8")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, err = w.Write(data)
|
||||
if err != nil {
|
||||
logx.Errorw("error write response", logx.Field("type", "http"), logx.Field("error", err))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func ErrorHandle(err error) (int, any) {
|
||||
@@ -27,10 +48,9 @@ func ErrorHandle(err error) (int, any) {
|
||||
}
|
||||
|
||||
func ErrorHandleCtx(ctx context.Context, err error) (int, any) {
|
||||
code := http.StatusBadRequest
|
||||
reason := ErrInternalServer
|
||||
code := ErrUnknownReason
|
||||
var msg string
|
||||
if ec, ok := err.(interface{ Code() int }); ok {
|
||||
if ec, ok := err.(interface{ Code() Reason }); ok {
|
||||
code = ec.Code()
|
||||
}
|
||||
if ec, ok := err.(interface{ Message() string }); ok {
|
||||
@@ -38,27 +58,17 @@ func ErrorHandleCtx(ctx context.Context, err error) (int, any) {
|
||||
} else {
|
||||
msg = err.Error()
|
||||
}
|
||||
if ec, ok := err.(interface{ Reason() Reason }); ok {
|
||||
reason = ec.Reason()
|
||||
}
|
||||
|
||||
var errMsg string
|
||||
if reason < ErrUnknownLogicError && reason != ErrSucceed {
|
||||
errMsg = msg
|
||||
if code < ErrUnknownReason && code >= ErrInternalServer {
|
||||
logx.Errorw("request system error", logx.Field("err-msg", msg))
|
||||
msg = "system error"
|
||||
}
|
||||
|
||||
body := map[string]any{
|
||||
"code": reason,
|
||||
"message": msg,
|
||||
"status": map[string]any{
|
||||
"code": code,
|
||||
"msg": msg,
|
||||
},
|
||||
}
|
||||
if errMsg != "" && debug {
|
||||
body["err"] = errMsg
|
||||
}
|
||||
if ec, ok := err.(interface{ Metadata() any }); ok {
|
||||
if md := ec.Metadata(); md != nil {
|
||||
body["metadata"] = md
|
||||
}
|
||||
}
|
||||
return code, body
|
||||
return http.StatusOK, body
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user