2026-04-25 13:21:39 +08:00

52 lines
1.3 KiB
Go

package activity
import (
"context"
"strings"
"hyapp/pkg/xerr"
activitydomain "hyapp/services/activity-service/internal/domain/activity"
)
// Repository 隔离活动状态读取。
type Repository interface {
GetActivity(ctx context.Context, activityID string) (activitydomain.Activity, error)
}
// Config 保存活动服务底座配置。
type Config struct {
NodeID string
}
// Service 承载活动同步查询用例。
type Service struct {
cfg Config
repository Repository
}
// New 创建活动服务。
func New(cfg Config, repository Repository) *Service {
return &Service{cfg: cfg, repository: repository}
}
// Ping 返回当前节点可接受同步 RPC。
func (s *Service) Ping() (string, error) {
if strings.TrimSpace(s.cfg.NodeID) == "" {
return "", xerr.New(xerr.Unavailable, "activity node_id is not configured")
}
return s.cfg.NodeID, nil
}
// GetActivityStatus 查询活动底座状态。
func (s *Service) GetActivityStatus(ctx context.Context, activityID string) (activitydomain.Activity, error) {
if strings.TrimSpace(activityID) == "" {
return activitydomain.Activity{}, xerr.New(xerr.InvalidArgument, "activity_id is required")
}
if s.repository == nil {
return activitydomain.Activity{}, xerr.New(xerr.Unavailable, "activity repository is not configured")
}
return s.repository.GetActivity(ctx, activityID)
}