2026-06-06 13:50:46 +08:00

98 lines
3.7 KiB
Go

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,
}
}