diff --git a/server/rankserver/guildmgr.cc b/server/rankserver/guildmgr.cc index 6b08f53..c7a718e 100644 --- a/server/rankserver/guildmgr.cc +++ b/server/rankserver/guildmgr.cc @@ -2,6 +2,8 @@ #include "guildmgr.h" #include "typeconvert.h" +#include "ss_proto.pb.h" +#include "cs_proto.pb.h" void GuildMgr::Init() { @@ -29,6 +31,8 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) if (page_size < 1) { page_size = 1; } + int total_page = 0; + int total_count = 0; request->resp_xobj->SetVal("errcode", 0); request->resp_xobj->SetVal("errmsg", ""); @@ -37,15 +41,18 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) a8::MutableXObject* guild_list = a8::MutableXObject::NewArray(); for (auto& pair : guild_hash_) { cs::MFGuildBasic* guild = pair.second; - - a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); - TypeConvert::Convert(guild, guild_xobj); - delete guild_xobj; + if (guild->guild_name().find(search_name) != std::string::npos) { + ++total_count; + if (guild_list->Size() < page_size) { + a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); + TypeConvert::Convert(guild, guild_xobj); + delete guild_xobj; + } + } } - #if 0 - request->resp_xobj->SetVal("_total_page", 1); - request->resp_xobj->SetVal("_total_count", sorted_guild_list_.size()); - #endif + total_page = std::ceil((double)total_count / page_size); + request->resp_xobj->SetVal("_total_page", total_page); + request->resp_xobj->SetVal("_total_count", total_count); request->resp_xobj->SetVal("guild_list", *guild_list); delete guild_list; }