diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 7de9e88..a7af459 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -33,7 +33,7 @@ GuildMember* Guild::GetMember(const std::string& account_id) bool Guild::IsFull() { - return member_hash_.size() < 100; + return member_hash_.size() < 50; } void Guild::Rename(const std::string& new_guild_name) @@ -102,6 +102,7 @@ void Guild::Deserialize(const std::string& guild_data, const std::string& guild_ TypeConvert::Convert(member_pb.base_data(), *member); member_hash_[member->account_id] = member; } + GenSortedMembers(); } void Guild::_CMGuildInfo(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildInfo& msg) @@ -145,7 +146,17 @@ void Guild::_CMGuildRename(int socket_handle, const ss::MFIMMsgConext& context, void Guild::_CMGuildMemberList(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildMemberList& msg) { - + cs::SMGuildMemberList respmsg; + *respmsg.mutable_paging() = msg.paging(); + 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()); + } + GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); } void Guild::_CMGuildLog(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildLog& msg) @@ -253,3 +264,11 @@ void Guild::SaveToDB() guild_id ); } + +void Guild::GenSortedMembers() +{ + sorted_members_.clear(); + for (auto& pair : member_hash_) { + sorted_members_.push_back(pair.second); + } +} diff --git a/server/imserver/guild.h b/server/imserver/guild.h index 6e3066b..3d70767 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -76,6 +76,7 @@ private: void FillGuildDB(ss::MFGuildDB& guild_pb); void SerializeMembers(std::string& guild_members); void SaveToDB(); + void GenSortedMembers(); private: bool dirty_ = false;