feat(guild): persist weekly bonus exceptional user count

The handler was a stub that discarded pkt.NumUsers. Now it
looks up the player's guild and atomically accumulates the
count via a new weekly_bonus_users column on the guilds table.
This commit is contained in:
Houmgaor
2026-02-21 00:42:16 +01:00
parent ad3fcbf908
commit 7932d8ac06
3 changed files with 23 additions and 2 deletions

View File

@@ -125,7 +125,13 @@ func handleMsgMhfGuildHuntdata(s *Session, p mhfpacket.MHFPacket) {
func handleMsgMhfAddGuildWeeklyBonusExceptionalUser(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfAddGuildWeeklyBonusExceptionalUser)
// TODO: record pkt.NumUsers to DB
// must use addition
if s.server.guildRepo != nil {
guild, err := s.server.guildRepo.GetByCharID(s.charID)
if err == nil && guild != nil {
if err := s.server.guildRepo.AddWeeklyBonusUsers(guild.ID, pkt.NumUsers); err != nil {
s.logger.Error("Failed to add weekly bonus users", zap.Error(err))
}
}
}
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
}

View File

@@ -938,3 +938,12 @@ func (r *GuildRepository) ListInvitedCharacters(guildID uint32) ([]*ScoutedChara
}
return chars, nil
}
// AddWeeklyBonusUsers atomically adds numUsers to the guild's weekly bonus exceptional user count.
func (r *GuildRepository) AddWeeklyBonusUsers(guildID uint32, numUsers uint8) error {
_, err := r.db.Exec(
"UPDATE guilds SET weekly_bonus_users = weekly_bonus_users + $1 WHERE id = $2",
numUsers, guildID,
)
return err
}