From b01e8159a144e30f30fd700692c7830ced85091b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 17 Sep 2020 20:02:29 +0800 Subject: [PATCH] 1 --- server/imserver/guild.cc | 7 ++----- server/imserver/utils.cc | 24 ++++++++++++++++++++++++ server/imserver/utils.h | 8 ++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 server/imserver/utils.cc create mode 100644 server/imserver/utils.h diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index a7af459..6a101a0 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -10,6 +10,7 @@ #include "app.h" #include "guildmgr.h" #include "typeconvert.h" +#include "utils.h" void Guild::Init() { @@ -151,11 +152,7 @@ void Guild::_CMGuildMemberList(int socket_handle, const ss::MFIMMsgConext& conte if (respmsg.paging().page_size() <= 0) { respmsg.mutable_paging()->set_page_size(10); } - respmsg.mutable_paging()->set__total_page(std::ceil(sorted_members_.size() / respmsg.paging().page_size())); - respmsg.mutable_paging()->set__total_count(sorted_members_.size()); - if (respmsg.paging().curr_page() >= respmsg.paging()._total_page()) { - respmsg.mutable_paging()->set_curr_page(respmsg.paging()._total_page()); - } + AdjustPaging(respmsg.mutable_paging(), sorted_members_.size()); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); } diff --git a/server/imserver/utils.cc b/server/imserver/utils.cc new file mode 100644 index 0000000..3dbfdd6 --- /dev/null +++ b/server/imserver/utils.cc @@ -0,0 +1,24 @@ +#include "precompile.h" +#include "utils.h" + +#include "cs_proto.pb.h" +#include "ss_proto.pb.h" + +void AdjustPaging(cs::MFPaging* paging, int total_count) +{ + paging->set__total_page(std::ceil(total_count / paging->page_size())); + paging->set__total_count(total_count); + if (paging->curr_page() >= paging->_total_page()) { + paging->set_curr_page(paging->_total_page()); + } + if (paging->_total_page() <= 0) { + paging->set_curr_page(0); + } else { + if (paging->curr_page() < 0) { + paging->set_curr_page(0); + } + if (paging->curr_page() >= paging->_total_page()) { + paging->set_curr_page(paging->_total_page() - 1); + } + } +} diff --git a/server/imserver/utils.h b/server/imserver/utils.h new file mode 100644 index 0000000..1a7baae --- /dev/null +++ b/server/imserver/utils.h @@ -0,0 +1,8 @@ +#pragma once + +namespace cs +{ + class MFPaging; +} + +void AdjustPaging(cs::MFPaging* paging, int total_count);