diff --git a/pkg/a2r/api2rpc.go b/pkg/a2r/api2rpc.go index 4cfa3ee4c..50d5b2ac3 100644 --- a/pkg/a2r/api2rpc.go +++ b/pkg/a2r/api2rpc.go @@ -22,12 +22,9 @@ func Call[A, B, C any]( apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap()) // 参数错误 return } - if check, ok := any(&req).(checker.Checker); ok { - if err := check.Check(); err != nil { - log.ZWarn(c, "custom check error", err, "req", req) - apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败 - return - } + if err := checker.Validate(&req); err != nil { + apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败 + return } data, err := rpc(client, c, &req) if err != nil { diff --git a/pkg/checker/check.go b/pkg/checker/check.go index f59986ec7..f5913682d 100644 --- a/pkg/checker/check.go +++ b/pkg/checker/check.go @@ -3,3 +3,12 @@ package checker type Checker interface { Check() error } + +func Validate(args any) error { + if checker, ok := args.(Checker); ok { + if err := checker.Check(); err != nil { + return err + } + } + return nil +} diff --git a/pkg/common/mw/rpc_server_interceptor.go b/pkg/common/mw/rpc_server_interceptor.go index 933ab88f1..518b5f0a2 100644 --- a/pkg/common/mw/rpc_server_interceptor.go +++ b/pkg/common/mw/rpc_server_interceptor.go @@ -92,13 +92,13 @@ func RpcServerInterceptor(ctx context.Context, req interface{}, info *grpc.Unary return nil, status.New(codes.InvalidArgument, err.Error()).Err() } } - if err := req.(checker.Checker); err != nil { - if err := err.Check(); err != nil { - return nil, status.New(codes.InvalidArgument, err.Error()).Err() - } - } log.ZInfo(ctx, "rpc server req", "funcName", funcName, "req", rpcString(req)) - resp, err = handler(ctx, req) + resp, err = func() (interface{}, error) { + if err := checker.Validate(req); err != nil { + return nil, err + } + return handler(ctx, req) + }() if err == nil { log.ZInfo(ctx, "rpc server resp", "funcName", funcName, "resp", rpcString(resp)) return resp, nil