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