This commit is contained in:
aozhiwei 2020-12-08 15:38:16 +08:00
parent bef62ab97f
commit bf4d78aeaa
6 changed files with 49 additions and 6 deletions

View File

@ -75,6 +75,13 @@ enum GuildMemberUpdateReason
kGuildUpdateReasonUpdate = 4, kGuildUpdateReasonUpdate = 4,
}; };
enum ChatChannel_e
{
kCCWorld = 0,
kCCFriend = 1,
kCCGuild = 2
};
const char* const PROJ_NAME_FMT = "friend_imserver"; const char* const PROJ_NAME_FMT = "friend_imserver";
const char* const PROJ_ROOT_FMT = "/data/logs/%s"; const char* const PROJ_ROOT_FMT = "/data/logs/%s";

View File

@ -102,6 +102,8 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendIdList); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendIdList);
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendChatMsg); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendChatMsg);
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMReadMsgAndOpenChatNotify);
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMCloseChatNotify);
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendCustomMsg); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendCustomMsg);
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMDirtyWordCheck); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMDirtyWordCheck);

View File

@ -548,16 +548,33 @@ void Player::_CMFriendIdList(f8::MsgHdr& hdr, const cs::CMFriendIdList& msg)
void Player::_CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg) void Player::_CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg)
{ {
#if 0
ss::SS_IM_SendChatMsg ss_msg; ss::SS_IM_SendChatMsg ss_msg;
FillIMMsgConext(ss_msg.mutable_context()); FillIMMsgConext(ss_msg.mutable_context());
ss_msg.set_chat_channel(msg.chat_channel()); ss_msg.set_chat_channel(msg.chat_channel());
ss_msg.set_msg(msg.msg()); ss_msg.set_target(msg.target());
ss_msg.set_msg_type(msg.msg_type());
ss_msg.set_msg_body(msg.msg_body());
Friend* friend_data = GetFriendById(msg.target()); Friend* friend_data = GetFriendById(msg.target());
if (friend_data) { if (friend_data) {
SendSSMsg(*friend_data, ss_msg); SendSSMsg(*friend_data, ss_msg);
} }
#endif }
void Player::_CMReadMsgAndOpenChatNotify(f8::MsgHdr& hdr, const cs::CMReadMsgAndOpenChatNotify& msg)
{
if (IsValidChatChannel(msg.curr_channel())) {
chat_channel_ = msg.curr_channel();
}
for (auto& pair : msg.last_ids()) {
if (IsValidChatChannel(pair.key())) {
chat_last_ids_hash_[pair.key()] = pair.val();
}
}
}
void Player::_CMCloseChatNotify(f8::MsgHdr& hdr, const cs::CMCloseChatNotify& msg)
{
chat_channel_ = -1;
} }
void Player::_CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg) void Player::_CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg)
@ -2252,3 +2269,12 @@ void Player::SyncGuildNewApply(long long guild_id)
ss::SSMessageId_e::_SS_IM_GuildNewApply, ss::SSMessageId_e::_SS_IM_GuildNewApply,
msg); msg);
} }
bool Player::IsValidChatChannel(int chat_channel)
{
if (chat_channel >= 0 && chat_channel < 2) {
return true;
} else {
return false;
}
}

View File

@ -94,6 +94,8 @@ class Player
void _CMFriendIdList(f8::MsgHdr& hdr, const cs::CMFriendIdList& msg); void _CMFriendIdList(f8::MsgHdr& hdr, const cs::CMFriendIdList& msg);
void _CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg); void _CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg);
void _CMReadMsgAndOpenChatNotify(f8::MsgHdr& hdr, const cs::CMReadMsgAndOpenChatNotify& msg);
void _CMCloseChatNotify(f8::MsgHdr& hdr, const cs::CMCloseChatNotify& msg);
void _CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg); void _CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg);
void _CMDirtyWordCheck(f8::MsgHdr& hdr, const cs::CMDirtyWordCheck& msg); void _CMDirtyWordCheck(f8::MsgHdr& hdr, const cs::CMDirtyWordCheck& msg);
@ -197,6 +199,7 @@ private:
void SyncGuildMemberInfo(); void SyncGuildMemberInfo();
void SyncGuildRedPoint(); void SyncGuildRedPoint();
void SyncGuildNewApply(long long guild_id); void SyncGuildNewApply(long long guild_id);
bool IsValidChatChannel(int chat_channel);
private: private:
bool dirty_ = false; bool dirty_ = false;
@ -212,6 +215,8 @@ private:
std::set<std::string> exclude_account_ids_; std::set<std::string> exclude_account_ids_;
std::string user_sign_; std::string user_sign_;
int last_create_guild_time_ = 0; int last_create_guild_time_ = 0;
int chat_channel_ = -1;
std::map<int, long long> chat_last_ids_hash_;
std::map<std::string, Friend*> friend_hash_; std::map<std::string, Friend*> friend_hash_;
std::map<std::string, Friend*> black_hash_; std::map<std::string, Friend*> black_hash_;

View File

@ -11,6 +11,8 @@ namespace ss
class SS_WSP_SocketDisconnect; class SS_WSP_SocketDisconnect;
class SS_MS_PushUserList; class SS_MS_PushUserList;
class SS_IM_SendChatMsg; class SS_IM_SendChatMsg;
class SS_IM_ReadMsgAndOpenChatNotify;
class SS_IM_CloseChatNotify;
class SS_IM_SendCustomMsg; class SS_IM_SendCustomMsg;
class SS_IM_UpdateUserInfo; class SS_IM_UpdateUserInfo;
class SS_IM_FriendAgreeRequest; class SS_IM_FriendAgreeRequest;

View File

@ -238,9 +238,10 @@ message SS_MS_PushUserList
message SS_IM_SendChatMsg message SS_IM_SendChatMsg
{ {
optional MFIMMsgConext context = 1; optional MFIMMsgConext context = 1;
optional string target = 2; optional int32 chat_channel = 2;
optional int32 chat_channel = 3; optional string target = 3;
optional string msg = 4; optional int32 msg_type = 4;
optional string msg_body = 5;
} }
message SS_IM_SendCustomMsg message SS_IM_SendCustomMsg