2026-06-26 17:56:30 +08:00

127 lines
5.2 KiB
Go

package activityapi
import (
"context"
"hyapp/pkg/userleaderboard"
"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
userLeaderboard UserLeaderboardStore
registrationReward client.RegistrationRewardClient
firstRechargeReward client.FirstRechargeRewardClient
cumulativeRecharge client.CumulativeRechargeRewardClient
inviteActivityReward client.InviteActivityRewardClient
sevenDayCheckIn client.SevenDayCheckInClient
luckyGift client.LuckyGiftClient
roomTurnoverReward client.RoomTurnoverRewardClient
weeklyStar client.WeeklyStarClient
cpWeeklyRank client.CPWeeklyRankClient
agencyOpening client.AgencyOpeningClient
wheel client.WheelClient
}
type UserLeaderboardStore interface {
List(ctx context.Context, query userleaderboard.Query) (userleaderboard.Page, error)
RankForUser(ctx context.Context, query userleaderboard.Query, userID int64) (userleaderboard.Entry, bool, error)
}
type Config struct {
TaskClient client.TaskClient
GrowthLevelClient client.GrowthLevelClient
AchievementClient client.AchievementClient
UserProfileClient client.UserProfileClient
RoomQueryClient client.RoomQueryClient
WalletClient client.WalletClient
UserLeaderboard UserLeaderboardStore
RegistrationReward client.RegistrationRewardClient
FirstRechargeReward client.FirstRechargeRewardClient
CumulativeRecharge client.CumulativeRechargeRewardClient
InviteActivityReward client.InviteActivityRewardClient
SevenDayCheckIn client.SevenDayCheckInClient
LuckyGift client.LuckyGiftClient
RoomTurnoverReward client.RoomTurnoverRewardClient
WeeklyStar client.WeeklyStarClient
CPWeeklyRank client.CPWeeklyRankClient
AgencyOpening client.AgencyOpeningClient
Wheel client.WheelClient
}
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,
userLeaderboard: config.UserLeaderboard,
registrationReward: config.RegistrationReward,
firstRechargeReward: config.FirstRechargeReward,
cumulativeRecharge: config.CumulativeRecharge,
inviteActivityReward: config.InviteActivityReward,
sevenDayCheckIn: config.SevenDayCheckIn,
luckyGift: config.LuckyGift,
roomTurnoverReward: config.RoomTurnoverReward,
weeklyStar: config.WeeklyStar,
cpWeeklyRank: config.CPWeeklyRank,
agencyOpening: config.AgencyOpening,
wheel: config.Wheel,
}
}
func (h *Handler) TaskHandlers() httproutes.TaskHandlers {
return httproutes.TaskHandlers{
ListTaskTabs: h.listTaskTabs,
ClaimTaskReward: h.claimTaskReward,
GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility,
GetFirstRechargeRewardStatus: h.getFirstRechargeRewardStatus,
GetCumulativeRechargeRewardStatus: h.getCumulativeRechargeRewardStatus,
GetInviteActivityRewardStatus: h.getInviteActivityRewardStatus,
ClaimInviteActivityReward: h.claimInviteActivityReward,
ListInviteActivityLeaderboard: h.listInviteActivityLeaderboard,
GetSevenDayCheckInStatus: h.getSevenDayCheckInStatus,
SignSevenDayCheckIn: h.signSevenDayCheckIn,
ListUserLeaderboards: h.listUserLeaderboards,
CheckLuckyGift: h.checkLuckyGift,
GetRoomTurnoverRewardStatus: h.getRoomTurnoverRewardStatus,
GetWeeklyStarCurrent: h.getWeeklyStarCurrent,
ListWeeklyStarLeaderboard: h.listWeeklyStarLeaderboard,
ListWeeklyStarHistory: h.listWeeklyStarHistory,
GetCPWeeklyRankStatus: h.getCPWeeklyRankStatus,
GetAgencyOpeningStatus: h.getAgencyOpeningStatus,
ApplyAgencyOpening: h.applyAgencyOpening,
ListAgencyOpeningLeaderboard: h.listAgencyOpeningLeaderboard,
GetWheelConfig: h.getWheelConfig,
DrawWheel: h.drawWheel,
ListWheelHistory: h.listWheelHistory,
ListWheelHints: h.listWheelHints,
}
}
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,
}
}