2026-05-02 13:02:38 +08:00

47 lines
1.3 KiB
Go

package grpc
import (
"context"
activityv1 "hyapp.local/api/proto/activity/v1"
"hyapp/pkg/appcode"
"hyapp/pkg/xerr"
activityservice "hyapp/services/activity-service/internal/service/activity"
)
// Server 把 activity-service 用例层适配为 gRPC 接口。
type Server struct {
activityv1.UnimplementedActivityServiceServer
svc *activityservice.Service
}
// NewServer 创建 activity-service gRPC server。
func NewServer(svc *activityservice.Service) *Server {
return &Server{svc: svc}
}
// PingActivity 返回当前节点同步 RPC 可用性。
func (s *Server) PingActivity(context.Context, *activityv1.PingActivityRequest) (*activityv1.PingActivityResponse, error) {
nodeID, err := s.svc.Ping()
if err != nil {
return nil, xerr.ToGRPCError(err)
}
return &activityv1.PingActivityResponse{Ok: true, NodeId: nodeID}, nil
}
// GetActivityStatus 查询活动底座状态。
func (s *Server) GetActivityStatus(ctx context.Context, req *activityv1.GetActivityStatusRequest) (*activityv1.GetActivityStatusResponse, error) {
ctx = appcode.WithContext(ctx, req.GetMeta().GetAppCode())
activity, err := s.svc.GetActivityStatus(ctx, req.GetActivityId())
if err != nil {
return nil, xerr.ToGRPCError(err)
}
return &activityv1.GetActivityStatusResponse{
ActivityId: activity.ActivityID,
Status: string(activity.Status),
}, nil
}