47 lines
1.3 KiB
Go
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
|
|
}
|