diff --git a/internal/api/a2r/api2rpc.go b/internal/api/a2r/api2rpc.go index 92df6161b..d60eeb8bb 100644 --- a/internal/api/a2r/api2rpc.go +++ b/internal/api/a2r/api2rpc.go @@ -6,7 +6,6 @@ import ( "context" "github.com/gin-gonic/gin" "google.golang.org/grpc" - "net/http" ) func Call[A, B, C any]( @@ -14,30 +13,26 @@ func Call[A, B, C any]( client func() (C, error), c *gin.Context, ) { - var resp *apiresp.ApiResponse - defer func() { - c.JSON(http.StatusOK, resp) - }() var req A if err := c.BindJSON(&req); err != nil { - resp = apiresp.Error(constant.ErrArgs.Wrap(err.Error())) // 参数错误 + apiresp.GinError(c, constant.ErrArgs.Wrap(err.Error())) // 参数错误 return } if check, ok := any(&req).(interface{ Check() error }); ok { if err := check.Check(); err != nil { - resp = apiresp.Error(constant.ErrArgs.Wrap(err.Error())) // 参数校验失败 + apiresp.GinError(c, constant.ErrArgs.Wrap(err.Error())) // 参数校验失败 return } } cli, err := client() if err != nil { - resp = apiresp.Error(constant.ErrInternalServer.Wrap(err.Error())) // 参数校验失败 + apiresp.GinError(c, constant.ErrInternalServer.Wrap(err.Error())) // 获取RPC连接失败 return } data, err := rpc(cli, c, &req) if err != nil { - resp = apiresp.Error(err) // 参数校验失败 + apiresp.GinError(c, err) // RPC调用失败 return } - resp = apiresp.Success(data) // 成功 + apiresp.GinSuccess(c, data) // 成功 } diff --git a/internal/api/auth.go b/internal/api/auth.go index b1e3dcbed..d98ea360a 100644 --- a/internal/api/auth.go +++ b/internal/api/auth.go @@ -19,22 +19,26 @@ type Auth struct { zk *openKeeper.ZkClient } -func (a *Auth) getGroupClient() (auth.AuthClient, error) { - conn, err := a.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) +func (o *Auth) client() (auth.AuthClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName, nil) if err != nil { return nil, err } return auth.NewAuthClient(conn), nil } -func (a *Auth) UserToken(c *gin.Context) { - a2r.Call(auth.AuthClient.UserToken, a.getGroupClient, c) +func (o *Auth) UserRegister(c *gin.Context) { + a2r.Call(auth.AuthClient.UserRegister, o.client, c) } -func (a *Auth) ParseToken(c *gin.Context) { - a2r.Call(auth.AuthClient.ParseToken, a.getGroupClient, c) +func (o *Auth) UserToken(c *gin.Context) { + a2r.Call(auth.AuthClient.UserToken, o.client, c) } -func (a *Auth) ForceLogout(c *gin.Context) { - a2r.Call(auth.AuthClient.ForceLogout, a.getGroupClient, c) +func (o *Auth) ParseToken(c *gin.Context) { + a2r.Call(auth.AuthClient.ParseToken, o.client, c) +} + +func (o *Auth) ForceLogout(c *gin.Context) { + a2r.Call(auth.AuthClient.ForceLogout, o.client, c) } diff --git a/internal/apiresp/gin.go b/internal/apiresp/gin.go new file mode 100644 index 000000000..772a15c52 --- /dev/null +++ b/internal/apiresp/gin.go @@ -0,0 +1,18 @@ +package apiresp + +import ( + "github.com/gin-gonic/gin" + "net/http" +) + +func GinError(c *gin.Context, err error) { + if err == nil { + GinSuccess(c, nil) + return + } + c.JSON(http.StatusOK, apiError(err)) +} + +func GinSuccess(c *gin.Context, data any) { + c.JSON(http.StatusOK, apiSuccess(data)) +} diff --git a/internal/apiresp/resp.go b/internal/apiresp/resp.go index 1ee9d3c76..a148e9f64 100644 --- a/internal/apiresp/resp.go +++ b/internal/apiresp/resp.go @@ -7,12 +7,12 @@ type ApiResponse struct { Data any `json:"data"` } -func Success(data any) *ApiResponse { +func apiSuccess(data any) *ApiResponse { return &ApiResponse{ Data: data, } } -func Error(err error) *ApiResponse { - return &ApiResponse{} +func apiError(err error) *ApiResponse { + return &ApiResponse{ErrCode: 10000, ErrMsg: err.Error()} }