From 87ed2d19c178e352837abd1d65c1dbcfaea6e266 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 22 Jun 2020 15:34:28 +0800 Subject: [PATCH] 1 --- server/imserver/player.cc | 19 ++++++++++++++++++- server/imserver/player.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/server/imserver/player.cc b/server/imserver/player.cc index 01dbe0c..9adbb59 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -251,6 +251,12 @@ void Player::_CMFriendAgree(f8::MsgHdr& hdr, const cs::CMFriendAgree& msg) SendMsg(respmsg); return; } + if (!CanAddFriend(msg.apply().base_data().account_id())) { + respmsg.set_errcode(3); + respmsg.set_errmsg("您的好友数已达到上限"); + SendMsg(respmsg); + return; + } Friend* friendobj = new Friend; TypeConvert::Convert(msg.apply().base_data(), friendobj->base_data); if (AddFriend(friendobj) == 0) { @@ -952,7 +958,7 @@ void Player::OnFriendAgreeEvent(Event& event) if (GetFriendById(event.sender_id)) { return; } - if (GetFriendNum() >= MAX_FRIEND_NUM) { + if (!CanAddFriend(event.sender_id)) { return; } Friend* friendobj = new Friend; @@ -972,3 +978,14 @@ void Player::OnFriendDeleteEvent(Event& event) } RemoveFriend(event.sender_id); } + +bool Player::CanAddFriend(const std::string& account_id) +{ + if (GetFriendNum() >= MAX_FRIEND_NUM) { + return false; + } + if (GetFriendById(account_id)) { + return false; + } + return true; +} diff --git a/server/imserver/player.h b/server/imserver/player.h index ed5919c..5fc87c4 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -126,6 +126,7 @@ private: void ProcessEvent(); void OnFriendAgreeEvent(Event& event); void OnFriendDeleteEvent(Event& event); + bool CanAddFriend(const std::string& account_id); private: bool dirty_ = false;