2026-05-20 10:22:35 +08:00

64 lines
2.0 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
sevenDayCheckIn client.SevenDayCheckInClient
}
type Config struct {
TaskClient client.TaskClient
GrowthLevelClient client.GrowthLevelClient
AchievementClient client.AchievementClient
WalletClient client.WalletClient
RegistrationReward client.RegistrationRewardClient
SevenDayCheckIn client.SevenDayCheckInClient
}
func New(config Config) *Handler {
return &Handler{
taskClient: config.TaskClient,
growthLevelClient: config.GrowthLevelClient,
achievementClient: config.AchievementClient,
walletClient: config.WalletClient,
registrationReward: config.RegistrationReward,
sevenDayCheckIn: config.SevenDayCheckIn,
}
}
func (h *Handler) TaskHandlers() httproutes.TaskHandlers {
return httproutes.TaskHandlers{
ListTaskTabs: h.listTaskTabs,
ClaimTaskReward: h.claimTaskReward,
GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility,
GetSevenDayCheckInStatus: h.getSevenDayCheckInStatus,
SignSevenDayCheckIn: h.signSevenDayCheckIn,
}
}
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,
}
}