diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 6dbe2758..2af31fa2 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -28,6 +28,7 @@ import ( "github.com/iwind/gosock/pkg/gosock" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/status" "gopkg.in/yaml.v3" "log" "net" @@ -832,7 +833,12 @@ func (this *APINode) unaryInterceptor(ctx context.Context, req any, info *grpc.U } result, err := handler(ctx, req) if err != nil { - err = errors.New("'" + info.FullMethod + "()' says: " + err.Error()) + statusErr, ok := status.FromError(err) + if ok { + err = status.Error(statusErr.Code(), "'" + info.FullMethod + "()' says: " + err.Error()) + } else { + err = errors.New("'" + info.FullMethod + "()' says: " + err.Error()) + } } return result, err } diff --git a/internal/rpc/services/service_base.go b/internal/rpc/services/service_base.go index 8f793e56..6b4a2e08 100644 --- a/internal/rpc/services/service_base.go +++ b/internal/rpc/services/service_base.go @@ -16,7 +16,9 @@ import ( "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/maps" + "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" ) type BaseService struct { @@ -229,7 +231,7 @@ func (this *BaseService) PermissionError() error { } func (this *BaseService) NotImplementedYet() error { - return errors.New("not implemented yet") + return status.Error(codes.Unimplemented, "not implemented yet") } // NullTx 空的数据库事务