2026-05-14 17:44:16 +08:00

59 lines
1.8 KiB
Go

package activityapi
import (
"hyapp/services/gateway-service/internal/client"
"hyapp/services/gateway-service/internal/transport/http/httproutes"
)
// Handler owns activity-facing HTTP endpoints.
// It keeps task and registration reward reads/writes behind activity-service, with gateway only adding auth context.
type Handler struct {
taskClient client.TaskClient
growthLevelClient client.GrowthLevelClient
achievementClient client.AchievementClient
walletClient client.WalletClient
registrationReward client.RegistrationRewardClient
}
type Config struct {
TaskClient client.TaskClient
GrowthLevelClient client.GrowthLevelClient
AchievementClient client.AchievementClient
WalletClient client.WalletClient
RegistrationReward client.RegistrationRewardClient
}
func New(config Config) *Handler {
return &Handler{
taskClient: config.TaskClient,
growthLevelClient: config.GrowthLevelClient,
achievementClient: config.AchievementClient,
walletClient: config.WalletClient,
registrationReward: config.RegistrationReward,
}
}
func (h *Handler) TaskHandlers() httproutes.TaskHandlers {
return httproutes.TaskHandlers{
ListTaskTabs: h.listTaskTabs,
ClaimTaskReward: h.claimTaskReward,
GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility,
}
}
func (h *Handler) LevelHandlers() httproutes.LevelHandlers {
return httproutes.LevelHandlers{
GetMyLevelOverview: h.getMyLevelOverview,
GetLevelTrack: h.getLevelTrack,
ListLevelRewards: h.listLevelRewards,
}
}
func (h *Handler) AchievementHandlers() httproutes.AchievementHandlers {
return httproutes.AchievementHandlers{
ListAchievements: h.listAchievements,
ListMyBadges: h.listMyBadges,
SetBadgeDisplay: h.setBadgeDisplay,
}
}