diff --git a/server/rankserver/guildmgr.cc b/server/rankserver/guildmgr.cc index 51c87c9..1ce7c97 100644 --- a/server/rankserver/guildmgr.cc +++ b/server/rankserver/guildmgr.cc @@ -312,8 +312,9 @@ void GuildMgr::__GuildRename(f8::JsonHttpRequest* request) std::string guild_name = request->request.At("guild_name")->AsXValue().GetString(); std::string guild_declaration = request->request.At("guild_declaration")->AsXValue().GetString(); - guild->set_guild_name(guild_name); - guild->set_guild_declaration(guild_declaration); + GuildMgr::Instance()->GuildRename(guild, guild_name); + guild->set_guild_name(guild_declaration); + { std::string response; request->resp_xobj->ToJsonStr(response); @@ -739,3 +740,13 @@ std::string GuildMgr::GenGuildName(int gameid, int channel, const std::string& r std::string guild_name = a8::XValue(gameid).GetString() + NAME_MAGIC_SYMBOL + raw_name; return guild_name; } + +void GuildMgr::GuildRename(cs::MFGuildBasic* guild, const std::string& new_name) +{ + if (guild->guild_name() != new_name) { + std::string old_name = GenGuildName(guild->_gameid(), guild->_channel(), guild->guild_name()); + name_hash_.erase(old_name); + guild->set_guild_name(new_name); + name_hash_[GenGuildName(guild->_gameid(), guild->_channel(), new_name)] = guild; + } +} diff --git a/server/rankserver/guildmgr.h b/server/rankserver/guildmgr.h index 851863f..689a716 100644 --- a/server/rankserver/guildmgr.h +++ b/server/rankserver/guildmgr.h @@ -41,6 +41,7 @@ class GuildMgr : public a8::Singleton bool CmpGuild(cs::MFGuildBasic* a, cs::MFGuildBasic* b); void InstallSyncGuildTimer(); std::string GenGuildName(int gameid, int channel, const std::string& raw_name); + void GuildRename(cs::MFGuildBasic* guild, const std::string& new_name); private: a8::TimerAttacher timer_attacher_;