package activityapi import ( "database/sql" "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 userProfileClient client.UserProfileClient roomQueryClient client.RoomQueryClient walletClient client.WalletClient walletDB *sql.DB registrationReward client.RegistrationRewardClient firstRechargeReward client.FirstRechargeRewardClient sevenDayCheckIn client.SevenDayCheckInClient luckyGift client.LuckyGiftClient } type Config struct { TaskClient client.TaskClient GrowthLevelClient client.GrowthLevelClient AchievementClient client.AchievementClient UserProfileClient client.UserProfileClient RoomQueryClient client.RoomQueryClient WalletClient client.WalletClient WalletDB *sql.DB RegistrationReward client.RegistrationRewardClient FirstRechargeReward client.FirstRechargeRewardClient SevenDayCheckIn client.SevenDayCheckInClient LuckyGift client.LuckyGiftClient } func New(config Config) *Handler { return &Handler{ taskClient: config.TaskClient, growthLevelClient: config.GrowthLevelClient, achievementClient: config.AchievementClient, userProfileClient: config.UserProfileClient, roomQueryClient: config.RoomQueryClient, walletClient: config.WalletClient, walletDB: config.WalletDB, registrationReward: config.RegistrationReward, firstRechargeReward: config.FirstRechargeReward, sevenDayCheckIn: config.SevenDayCheckIn, luckyGift: config.LuckyGift, } } func (h *Handler) TaskHandlers() httproutes.TaskHandlers { return httproutes.TaskHandlers{ ListTaskTabs: h.listTaskTabs, ClaimTaskReward: h.claimTaskReward, GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility, GetFirstRechargeRewardStatus: h.getFirstRechargeRewardStatus, GetSevenDayCheckInStatus: h.getSevenDayCheckInStatus, SignSevenDayCheckIn: h.signSevenDayCheckIn, ListUserLeaderboards: h.listUserLeaderboards, CheckLuckyGift: h.checkLuckyGift, } } 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, } }