diff --git a/server/rankserver/guildmgr.cc b/server/rankserver/guildmgr.cc index 68e684f..6b08f53 100644 --- a/server/rankserver/guildmgr.cc +++ b/server/rankserver/guildmgr.cc @@ -1,5 +1,7 @@ #include "precompile.h" + #include "guildmgr.h" +#include "typeconvert.h" void GuildMgr::Init() { @@ -18,10 +20,50 @@ void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request) void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) { + int curr_page = request->request.At("curr_page")->AsXValue(); + int page_size = request->request.At("page_size")->AsXValue(); + std::string search_name = request->request.At("guild_name")->AsXValue().GetString(); + if (curr_page < 0) { + curr_page = 0; + } + if (page_size < 1) { + page_size = 1; + } + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); + request->resp_xobj->SetVal("curr_page", curr_page); + request->resp_xobj->SetVal("page_size", page_size); + 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 0 + request->resp_xobj->SetVal("_total_page", 1); + request->resp_xobj->SetVal("_total_count", sorted_guild_list_.size()); + #endif + request->resp_xobj->SetVal("guild_list", *guild_list); + delete guild_list; } void GuildMgr::__GuildRank(f8::JsonHttpRequest* request) { - + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); + request->resp_xobj->SetVal("curr_page", 0); + request->resp_xobj->SetVal("page_size", 50); + request->resp_xobj->SetVal("_total_page", 1); + request->resp_xobj->SetVal("_total_count", sorted_guild_list_.size()); + a8::MutableXObject* guild_list = a8::MutableXObject::NewArray(); + for (auto& guild : sorted_guild_list_) { + a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); + TypeConvert::Convert(guild, guild_xobj); + delete guild_xobj; + } + request->resp_xobj->SetVal("guild_list", *guild_list); + delete guild_list; } diff --git a/server/rankserver/typeconvert.cc b/server/rankserver/typeconvert.cc index 81bf18e..aa35a53 100644 --- a/server/rankserver/typeconvert.cc +++ b/server/rankserver/typeconvert.cc @@ -3,3 +3,17 @@ #include "typeconvert.h" #include "cs_proto.pb.h" #include "ss_proto.pb.h" + +void TypeConvert::Convert(const cs::MFGuildBasic* guild_basic, a8::MutableXObject* xobj) +{ + xobj->SetVal("guild_id", guild_basic->guild_id()); + xobj->SetVal("guild_name", guild_basic->guild_name()); + xobj->SetVal("guild_lv", guild_basic->guild_lv()); + xobj->SetVal("guild_exp", guild_basic->guild_exp()); + xobj->SetVal("guild_badge", guild_basic->guild_badge()); + xobj->SetVal("member_num", guild_basic->member_num()); + xobj->SetVal("guild_declareation", guild_basic->guild_declaration()); + xobj->SetVal("guild_owner_id", guild_basic->guild_owner_id()); + xobj->SetVal("guild_owner_name", guild_basic->guild_owner_name()); + xobj->SetVal("guild_owner_avatar_url", guild_basic->guild_owner_avatar_url()); +} diff --git a/server/rankserver/typeconvert.h b/server/rankserver/typeconvert.h index f611181..4ebcad8 100644 --- a/server/rankserver/typeconvert.h +++ b/server/rankserver/typeconvert.h @@ -1,6 +1,15 @@ #pragma once +#include + +namespace cs +{ + class MFGuildBasic; +} + class TypeConvert { public: + + static void Convert(const cs::MFGuildBasic* guild_basic, a8::MutableXObject* xobj); };