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 cumulativeRecharge client.CumulativeRechargeRewardClient sevenDayCheckIn client.SevenDayCheckInClient luckyGift client.LuckyGiftClient roomTurnoverReward client.RoomTurnoverRewardClient weeklyStar client.WeeklyStarClient } 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 CumulativeRecharge client.CumulativeRechargeRewardClient SevenDayCheckIn client.SevenDayCheckInClient LuckyGift client.LuckyGiftClient RoomTurnoverReward client.RoomTurnoverRewardClient WeeklyStar client.WeeklyStarClient } 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, cumulativeRecharge: config.CumulativeRecharge, sevenDayCheckIn: config.SevenDayCheckIn, luckyGift: config.LuckyGift, roomTurnoverReward: config.RoomTurnoverReward, weeklyStar: config.WeeklyStar, } } func (h *Handler) TaskHandlers() httproutes.TaskHandlers { return httproutes.TaskHandlers{ ListTaskTabs: h.listTaskTabs, ClaimTaskReward: h.claimTaskReward, GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility, GetFirstRechargeRewardStatus: h.getFirstRechargeRewardStatus, GetCumulativeRechargeRewardStatus: h.getCumulativeRechargeRewardStatus, GetSevenDayCheckInStatus: h.getSevenDayCheckInStatus, SignSevenDayCheckIn: h.signSevenDayCheckIn, ListUserLeaderboards: h.listUserLeaderboards, CheckLuckyGift: h.checkLuckyGift, GetRoomTurnoverRewardStatus: h.getRoomTurnoverRewardStatus, GetWeeklyStarCurrent: h.getWeeklyStarCurrent, ListWeeklyStarLeaderboard: h.listWeeklyStarLeaderboard, ListWeeklyStarHistory: h.listWeeklyStarHistory, } } 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, } }