修复:为 user-svc 添加健康检查和启动顺序控制
This commit is contained in:
@@ -5,17 +5,18 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
"backend/services/user-svc/internal/domain"
|
||||
"backend/services/user-svc/internal/service"
|
||||
"backend/shared/pkg/errors"
|
||||
"backend/shared/pkg/logger"
|
||||
"user-svc/internal/domain"
|
||||
"user-svc/internal/service"
|
||||
"shared/pkg/errors"
|
||||
"shared/pkg/logger"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
// 导入生成的 proto 代码
|
||||
userpb "backend/services/user-svc/proto"
|
||||
userpb "shared/proto/user"
|
||||
common "shared/proto/common"
|
||||
)
|
||||
|
||||
type UserServer struct {
|
||||
@@ -41,36 +42,36 @@ func (s *UserServer) Register(ctx context.Context, req *userpb.RegisterRequest)
|
||||
logger.Error("Register failed: %v", err)
|
||||
|
||||
// 转换错误类型
|
||||
switch {
|
||||
case errors.IsConflict(err):
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &userpb.Response{
|
||||
Code: 409,
|
||||
Message: "账号已存在",
|
||||
},
|
||||
}, status.Errorf(codes.AlreadyExists, "账号已存在")
|
||||
case errors.IsInvalidInput(err):
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &userpb.Response{
|
||||
Code: 400,
|
||||
Message: "无效的输入参数",
|
||||
},
|
||||
}, status.Errorf(codes.InvalidArgument, "无效的输入参数")
|
||||
default:
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &userpb.Response{
|
||||
Code: 500,
|
||||
Message: "内部服务器错误",
|
||||
},
|
||||
}, status.Errorf(codes.Internal, "内部服务器错误")
|
||||
}
|
||||
switch {
|
||||
case errors.IsConflict(err):
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &common.Response{
|
||||
Code: 409,
|
||||
Message: "账号已存在",
|
||||
},
|
||||
}, status.Errorf(codes.AlreadyExists, "账号已存在")
|
||||
case errors.IsInvalidInput(err):
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &common.Response{
|
||||
Code: 400,
|
||||
Message: "无效的输入参数",
|
||||
},
|
||||
}, status.Errorf(codes.InvalidArgument, "无效的输入参数")
|
||||
default:
|
||||
return &userpb.RegisterResponse{
|
||||
Response: &common.Response{
|
||||
Code: 500,
|
||||
Message: "内部服务器错误",
|
||||
},
|
||||
}, status.Errorf(codes.Internal, "内部服务器错误")
|
||||
}
|
||||
}
|
||||
|
||||
// 构造响应
|
||||
return &userpb.RegisterResponse{
|
||||
UserId: resp.UserID.String(),
|
||||
Account: resp.Account,
|
||||
Response: &userpb.Response{
|
||||
Response: &common.Response{
|
||||
Code: 200,
|
||||
Message: "注册成功",
|
||||
},
|
||||
@@ -88,21 +89,21 @@ func (s *UserServer) GetUserByAccount(ctx context.Context, req *userpb.GetUserBy
|
||||
switch {
|
||||
case errors.IsNotFound(err):
|
||||
return &userpb.GetUserByAccountResponse{
|
||||
Response: &userpb.Response{
|
||||
Response: &common.Response{
|
||||
Code: 404,
|
||||
Message: "用户不存在",
|
||||
},
|
||||
}, status.Errorf(codes.NotFound, "用户不存在")
|
||||
case errors.IsInvalidInput(err):
|
||||
return &userpb.GetUserByAccountResponse{
|
||||
Response: &userpb.Response{
|
||||
Response: &common.Response{
|
||||
Code: 400,
|
||||
Message: "无效的输入参数",
|
||||
},
|
||||
}, status.Errorf(codes.InvalidArgument, "无效的输入参数")
|
||||
default:
|
||||
return &userpb.GetUserByAccountResponse{
|
||||
Response: &userpb.Response{
|
||||
Response: &common.Response{
|
||||
Code: 500,
|
||||
Message: "内部服务器错误",
|
||||
},
|
||||
@@ -114,7 +115,7 @@ func (s *UserServer) GetUserByAccount(ctx context.Context, req *userpb.GetUserBy
|
||||
return &userpb.GetUserByAccountResponse{
|
||||
UserId: user.ID.String(),
|
||||
Account: account.Account,
|
||||
Response: &userpb.Response{
|
||||
Response: &common.Response{
|
||||
Code: 200,
|
||||
Message: "获取成功",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user