diff --git a/server/imserver/chatmgr.cc b/server/imserver/chatmgr.cc index b13c089..60e1c00 100644 --- a/server/imserver/chatmgr.cc +++ b/server/imserver/chatmgr.cc @@ -176,6 +176,10 @@ void ChatMgr::ProcTeamChat(Player* hum, const cs::CMSendChatMsg& msg) Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(member_id); if (hum) { hum->SendMsg(notifymsg); + if (hum->chat_channel == kCCTeam) { + a8::SetBitFlag(hum->red_point_flags_, RPF_FriendApply); + hum->SyncRedPoint(); + } } } delete p; @@ -269,6 +273,8 @@ void ChatMgr::SyncPrivateChatMsg(Player* hum) } } else { hum->MarkNewMsg(); + a8::SetBitFlag(hum->red_point_flags_, RPF_FriendApply); + hum->SyncRedPoint(); } } @@ -292,6 +298,8 @@ void ChatMgr::SyncGuildChatMsg(Player* hum) } } else { hum->MarkNewMsg(); + a8::SetBitFlag(hum->red_point_flags_, RPF_FriendApply); + hum->SyncRedPoint(); } } } diff --git a/server/imserver/constant.h b/server/imserver/constant.h index ef8b60c..8e5b14c 100644 --- a/server/imserver/constant.h +++ b/server/imserver/constant.h @@ -55,7 +55,8 @@ enum NetHandler_e enum ReadPointFlag { RPF_FriendApply = 0, - RPF_GuildApply = 1 + RPF_GuildApply = 1, + RPF_Chat = 1 }; enum GuildMemberQuitReason diff --git a/server/imserver/player.cc b/server/imserver/player.cc index a6a592f..30057d4 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -632,6 +632,9 @@ void Player::_CMReadMsgAndOpenChatNotify(f8::MsgHdr& hdr, const cs::CMReadMsgAnd } } } + + a8::UnSetBitFlag(red_point_flags_, RPF_Chat); + SyncRedPoint(); } } diff --git a/server/imserver/player.h b/server/imserver/player.h index bf3579e..d45ce8a 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -23,6 +23,7 @@ class Player int channel = 0; long ip_saddr = 0; int account_registertime = 0; + int red_point_flags_ = 0; int chat_channel = -1; std::string private_target; @@ -167,6 +168,7 @@ class Player void SaveToDB(a8::XParams param, f8::AsyncDBOnOkFunc on_ok, f8::AsyncDBOnErrorFunc on_error); void MarkNewMsg(); + void SyncRedPoint(); private: void FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list); @@ -195,7 +197,6 @@ private: void OnFriendDeleteEvent(Event& event); void OnGuildRefuseEvent(Event& event); bool CanAddFriend(const std::string& account_id); - void SyncRedPoint(); void OnDailyReset(); void RecalcRedPoint(); void ClearApplyByIdx(long long idx); @@ -223,7 +224,6 @@ private: bool event_fetching_ = false; long long last_run_tick_ = 0; std::map event_hash_; - int red_point_flags_ = 0; std::set exclude_account_ids_; std::string user_sign_; int last_create_guild_time_ = 0; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 6b55b7b..6c049a5 100644 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -814,7 +814,7 @@ message SMUpdateAccountInfo //更新红点信息 message SMUpdateRedPointNotify { - optional int32 red_point_flags = 1; //红点信息 1<<0:好友申请 1<<1:公会申请 + optional int32 red_point_flags = 1; //红点信息 1<<0:好友申请 1<<1:公会申请 1<<2:聊天红点 } //更新聊天红点信息