diff --git a/server/imserver/guild.h b/server/imserver/guild.h index 01664f6..ccf7cd2 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -32,6 +32,7 @@ public: long long GuildId() { return guild_id_; } int GetMemberJob(const std::string& account_id); + int Status() { return guild_status_; } std::set* GetJobMembers(int job); int GetJobMemberNum(int job); void UpdateMemberInfo(const cs::MFUserInfo& user_info); diff --git a/server/imserver/guildmgr.cc b/server/imserver/guildmgr.cc index 422daa9..29117fa 100644 --- a/server/imserver/guildmgr.cc +++ b/server/imserver/guildmgr.cc @@ -18,6 +18,7 @@ #include "app.h" #include "typeconvert.h" #include "handlermgr.h" +#include "synchelper.h" #include "framework/cpp/httpclientpool.h" @@ -44,8 +45,21 @@ public: hdr.offset = 0; hdr.hum = nullptr; hdr.user_data = &forward_msg; - guild->Active(); - ProcessNetMsg(handler, guild, hdr); + if (guild->Status() == kGuildDismissed) { + cs::SMShowErrorMsg notifymsg; + notifymsg.set_msg("公会已解散"); + GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, + forward_msg.context(), + notifymsg); + SyncHelper::Instance()->SyncGuildMemberQuit + (guild, + forward_msg.context().user_info().base_data().account_id(), + forward_msg.context().user_info().base_data().account_id(), + kGuildDismisss); + } else { + guild->Active(); + ProcessNetMsg(handler, guild, hdr); + } } } diff --git a/server/imserver/jsondatamgr.cc b/server/imserver/jsondatamgr.cc index e88e739..39439a9 100644 --- a/server/imserver/jsondatamgr.cc +++ b/server/imserver/jsondatamgr.cc @@ -69,6 +69,11 @@ std::shared_ptr JsonDataMgr::GetMasterServerClusterConf() return std::make_shared(masterserver_cluster_json_); } +std::shared_ptr JsonDataMgr::GetRankServerClusterConf() +{ + return std::make_shared(rankserver_cluster_json_); +} + std::shared_ptr JsonDataMgr::GetMysqlClusterConf() { return std::make_shared(mysql_cluster_json_); @@ -76,7 +81,7 @@ std::shared_ptr JsonDataMgr::GetMysqlClusterConf() bool JsonDataMgr::GetRankServerConf(std::string& ip, int& port) { - std::shared_ptr rankserver_cluster_conf = GetMasterServerClusterConf(); + std::shared_ptr rankserver_cluster_conf = GetRankServerClusterConf(); std::shared_ptr conf = rankserver_cluster_conf->At(0); ip = conf->At("ip")->AsXValue().GetString(); port = conf->At("port")->AsXValue();