diff --git a/app/player/rpc/internal/logic/getPlayerByUserIdLogic.go b/app/player/rpc/internal/logic/getPlayerByUserIdLogic.go new file mode 100644 index 0000000..f9a5fc9 --- /dev/null +++ b/app/player/rpc/internal/logic/getPlayerByUserIdLogic.go @@ -0,0 +1,56 @@ +package logic + +import ( + "context" + "errors" + "juwan-backend/app/player/rpc/internal/models/players" + + "juwan-backend/app/player/rpc/internal/svc" + "juwan-backend/app/player/rpc/pb" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetPlayerByUserIdLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetPlayerByUserIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetPlayerByUserIdLogic { + return &GetPlayerByUserIdLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetPlayerByUserIdLogic) GetPlayerByUserId(in *pb.SearchPlayersReq) (*pb.GetPlayersByIdResp, error) { + if in.UserId == nil { + return nil, errors.New("user id is required") + } + + player, err := l.svcCtx.PlayerModelRO.Players.Query().Where(players.UserIDEQ(in.GetUserId())).First(l.ctx) + if err != nil { + logx.WithContext(l.ctx).Errorf("GetPlayerByUserIdLogic err: %v", err) + return nil, errors.New("get player by user id failed") + } + + pbPlayer := pb.Players{ + Id: player.ID, + UserId: player.UserID, + Status: player.Status, + Rating: player.Rating.InexactFloat64(), + TotalOrders: int64(player.TotalOrders), + CompletedOrders: int64(player.CompletedOrders), + Tags: player.Tags, + Games: []int64(player.Games), + CreatedAt: player.CreatedAt.Unix(), + UpdatedAt: player.UpdatedAt.Unix(), + } + if player.ShopID != nil { + pbPlayer.ShopId = *player.ShopID + } + + return &pb.GetPlayersByIdResp{Players: &pbPlayer}, nil +} diff --git a/app/player/rpc/internal/server/playerServiceServer.go b/app/player/rpc/internal/server/playerServiceServer.go index e15bf5e..d93701e 100644 --- a/app/player/rpc/internal/server/playerServiceServer.go +++ b/app/player/rpc/internal/server/playerServiceServer.go @@ -70,6 +70,11 @@ func (s *PlayerServiceServer) GetPlayersById(ctx context.Context, in *pb.GetPlay return l.GetPlayersById(in) } +func (s *PlayerServiceServer) GetPlayerByUserId(ctx context.Context, in *pb.SearchPlayersReq) (*pb.GetPlayersByIdResp, error) { + l := logic.NewGetPlayerByUserIdLogic(ctx, s.svcCtx) + return l.GetPlayerByUserId(in) +} + func (s *PlayerServiceServer) SearchPlayers(ctx context.Context, in *pb.SearchPlayersReq) (*pb.SearchPlayersResp, error) { l := logic.NewSearchPlayersLogic(ctx, s.svcCtx) return l.SearchPlayers(in) diff --git a/app/player/rpc/pb/player_grpc.pb.go b/app/player/rpc/pb/player_grpc.pb.go index d7dee8a..3472ebf 100644 --- a/app/player/rpc/pb/player_grpc.pb.go +++ b/app/player/rpc/pb/player_grpc.pb.go @@ -28,6 +28,7 @@ const ( PlayerService_UpdatePlayers_FullMethodName = "/pb.playerService/UpdatePlayers" PlayerService_DelPlayers_FullMethodName = "/pb.playerService/DelPlayers" PlayerService_GetPlayersById_FullMethodName = "/pb.playerService/GetPlayersById" + PlayerService_GetPlayerByUserId_FullMethodName = "/pb.playerService/GetPlayerByUserId" PlayerService_SearchPlayers_FullMethodName = "/pb.playerService/SearchPlayers" ) @@ -46,6 +47,7 @@ type PlayerServiceClient interface { UpdatePlayers(ctx context.Context, in *UpdatePlayersReq, opts ...grpc.CallOption) (*UpdatePlayersResp, error) DelPlayers(ctx context.Context, in *DelPlayersReq, opts ...grpc.CallOption) (*DelPlayersResp, error) GetPlayersById(ctx context.Context, in *GetPlayersByIdReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) + GetPlayerByUserId(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) SearchPlayers(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*SearchPlayersResp, error) } @@ -147,6 +149,16 @@ func (c *playerServiceClient) GetPlayersById(ctx context.Context, in *GetPlayers return out, nil } +func (c *playerServiceClient) GetPlayerByUserId(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPlayersByIdResp) + err := c.cc.Invoke(ctx, PlayerService_GetPlayerByUserId_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *playerServiceClient) SearchPlayers(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*SearchPlayersResp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SearchPlayersResp) @@ -172,6 +184,7 @@ type PlayerServiceServer interface { UpdatePlayers(context.Context, *UpdatePlayersReq) (*UpdatePlayersResp, error) DelPlayers(context.Context, *DelPlayersReq) (*DelPlayersResp, error) GetPlayersById(context.Context, *GetPlayersByIdReq) (*GetPlayersByIdResp, error) + GetPlayerByUserId(context.Context, *SearchPlayersReq) (*GetPlayersByIdResp, error) SearchPlayers(context.Context, *SearchPlayersReq) (*SearchPlayersResp, error) mustEmbedUnimplementedPlayerServiceServer() } @@ -210,6 +223,9 @@ func (UnimplementedPlayerServiceServer) DelPlayers(context.Context, *DelPlayersR func (UnimplementedPlayerServiceServer) GetPlayersById(context.Context, *GetPlayersByIdReq) (*GetPlayersByIdResp, error) { return nil, status.Error(codes.Unimplemented, "method GetPlayersById not implemented") } +func (UnimplementedPlayerServiceServer) GetPlayerByUserId(context.Context, *SearchPlayersReq) (*GetPlayersByIdResp, error) { + return nil, status.Error(codes.Unimplemented, "method GetPlayerByUserId not implemented") +} func (UnimplementedPlayerServiceServer) SearchPlayers(context.Context, *SearchPlayersReq) (*SearchPlayersResp, error) { return nil, status.Error(codes.Unimplemented, "method SearchPlayers not implemented") } @@ -396,6 +412,24 @@ func _PlayerService_GetPlayersById_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _PlayerService_GetPlayerByUserId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchPlayersReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlayerServiceServer).GetPlayerByUserId(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PlayerService_GetPlayerByUserId_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlayerServiceServer).GetPlayerByUserId(ctx, req.(*SearchPlayersReq)) + } + return interceptor(ctx, in, info, handler) +} + func _PlayerService_SearchPlayers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SearchPlayersReq) if err := dec(in); err != nil { @@ -457,6 +491,10 @@ var PlayerService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetPlayersById", Handler: _PlayerService_GetPlayersById_Handler, }, + { + MethodName: "GetPlayerByUserId", + Handler: _PlayerService_GetPlayerByUserId_Handler, + }, { MethodName: "SearchPlayers", Handler: _PlayerService_SearchPlayers_Handler, diff --git a/app/player/rpc/playerservice/playerService.go b/app/player/rpc/playerservice/playerService.go index ac121c1..83f856d 100644 --- a/app/player/rpc/playerservice/playerService.go +++ b/app/player/rpc/playerservice/playerService.go @@ -49,6 +49,7 @@ type ( UpdatePlayers(ctx context.Context, in *UpdatePlayersReq, opts ...grpc.CallOption) (*UpdatePlayersResp, error) DelPlayers(ctx context.Context, in *DelPlayersReq, opts ...grpc.CallOption) (*DelPlayersResp, error) GetPlayersById(ctx context.Context, in *GetPlayersByIdReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) + GetPlayerByUserId(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) SearchPlayers(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*SearchPlayersResp, error) } @@ -110,6 +111,11 @@ func (m *defaultPlayerService) GetPlayersById(ctx context.Context, in *GetPlayer return client.GetPlayersById(ctx, in, opts...) } +func (m *defaultPlayerService) GetPlayerByUserId(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*GetPlayersByIdResp, error) { + client := pb.NewPlayerServiceClient(m.cli.Conn()) + return client.GetPlayerByUserId(ctx, in, opts...) +} + func (m *defaultPlayerService) SearchPlayers(ctx context.Context, in *SearchPlayersReq, opts ...grpc.CallOption) (*SearchPlayersResp, error) { client := pb.NewPlayerServiceClient(m.cli.Conn()) return client.SearchPlayers(ctx, in, opts...) diff --git a/desc/rpc/player.proto b/desc/rpc/player.proto index 305536d..6b9262e 100644 --- a/desc/rpc/player.proto +++ b/desc/rpc/player.proto @@ -204,5 +204,6 @@ service playerService{ rpc UpdatePlayers(UpdatePlayersReq) returns (UpdatePlayersResp); rpc DelPlayers(DelPlayersReq) returns (DelPlayersResp); rpc GetPlayersById(GetPlayersByIdReq) returns (GetPlayersByIdResp); + rpc GetPlayerByUserId(SearchPlayersReq) returns (GetPlayersByIdResp); rpc SearchPlayers(SearchPlayersReq) returns (SearchPlayersResp); }