From 1985fe4b279b0266e7ac8d85f2e10cace0dab960 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 21 Sep 2020 18:47:12 +0800 Subject: [PATCH] 1 --- server/rankserver/guildmgr.cc | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/server/rankserver/guildmgr.cc b/server/rankserver/guildmgr.cc index 4de11a7..8120c83 100644 --- a/server/rankserver/guildmgr.cc +++ b/server/rankserver/guildmgr.cc @@ -4,6 +4,7 @@ #include "typeconvert.h" #include "ss_proto.pb.h" #include "cs_proto.pb.h" +#include "dbengine.h" void GuildMgr::Init() { @@ -17,7 +18,29 @@ void GuildMgr::UnInit() void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request) { + request->pending = true; + long long guild_id = request->request.At("guild_id")->AsXValue(); + a8::XObject conn = DBEngine::Instance()->GetConnInfo(guild_id); + DBEngine::Instance()->ExecAsyncQuery + ( + conn, + "", + { + }, + a8::XParams(), + [] (a8::XParams& param, const f8::DataSet* data_set) + { + + }, + [] (a8::XParams& param, int error_code, const std::string& error_msg) + { + + }, + 0); + std::string guild_name = request->request.At("guild_name")->AsXValue().GetString(); + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); } void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) @@ -33,6 +56,7 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) } int total_page = 0; int total_count = 0; + std::vector last_page_data; request->resp_xobj->SetVal("errcode", 0); request->resp_xobj->SetVal("errmsg", ""); @@ -43,6 +67,10 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) cs::MFGuildBasic* guild = pair.second; if (guild->guild_name().find(search_name) != std::string::npos) { ++total_count; + last_page_data.push_back(guild); + if (last_page_data.size() % page_size == 0) { + last_page_data.clear(); + } if (total_count >= curr_page * page_size && guild_list->Size() < page_size) { a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); TypeConvert::Convert(guild, guild_xobj); @@ -51,6 +79,14 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request) } } total_page = std::ceil((double)total_count / page_size); + if (curr_page >= total_page) { + for (auto& guild : last_page_data) { + a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); + TypeConvert::Convert(guild, guild_xobj); + delete guild_xobj; + } + curr_page = total_page - 1; + } request->resp_xobj->SetVal("_total_page", total_page); request->resp_xobj->SetVal("_total_count", total_count); request->resp_xobj->SetVal("guild_list", *guild_list);