diff --git a/server/imserver/constant.h b/server/imserver/constant.h index a2b8b25..e2958c8 100644 --- a/server/imserver/constant.h +++ b/server/imserver/constant.h @@ -35,4 +35,6 @@ enum NetHandler_e const char* const PROJ_NAME_FMT = "friend_imserver"; const char* const PROJ_ROOT_FMT = "/data/logs/%s"; +const char* const EVENT_FRIEND_DELETE = "friend.delete"; + const int MAX_INSTANCE_ID = 1023; diff --git a/server/imserver/handlermgr.cc b/server/imserver/handlermgr.cc index d98b430..9ea8206 100644 --- a/server/imserver/handlermgr.cc +++ b/server/imserver/handlermgr.cc @@ -48,7 +48,7 @@ void HandlerMgr::RegisterNetMsgHandlers() RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_CMLogin); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendList); - RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendInvite); + RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendApply); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendIgnore); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendDelete); diff --git a/server/imserver/player.cc b/server/imserver/player.cc index f70d58f..761dc24 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -33,8 +33,8 @@ void Player::Deserialize(const cs::MFUserDB& user_db) friendobj.nickname = friend_db.nickname(); friendobj.avatar_url = friend_db.avatar_url(); friendobj.sex = friend_db.sex(); - friendobj.data_version1 = friend_db.data_version1(); friendobj.group_id = friend_db.group_id(); + friendobj.data_version1 = friend_db.data_version1(); friendobj.crc32_code = a8::openssl::Crc32( (unsigned char*)account_id.data(), account_id.size() @@ -51,8 +51,8 @@ void Player::Serialize(cs::MFUserDB& user_db) p->set_nickname(pair.second.nickname); p->set_avatar_url(pair.second.avatar_url); p->set_sex(pair.second.sex); - p->set_data_version1(pair.second.data_version1); p->set_group_id(pair.second.group_id); + p->set_data_version1(pair.second.data_version1); } } @@ -63,12 +63,17 @@ void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg) SendMsg(respmsg); } -void Player::_CMFriendInvite(f8::MsgHdr& hdr, const cs::CMFriendInvite& msg) +void Player::_CMFriendApply(f8::MsgHdr& hdr, const cs::CMFriendApply& msg) { cs::SMFriendInvite respmsg; SendMsg(respmsg); } +void Player::_CMFriendApplyList(f8::MsgHdr& hdr, const cs::CMFriendApplyList& msg) +{ + +} + void Player::_CMFriendIgnore(f8::MsgHdr& hdr, const cs::CMFriendIgnore& msg) { cs::SMFriendIgnore respmsg; @@ -78,6 +83,11 @@ void Player::_CMFriendIgnore(f8::MsgHdr& hdr, const cs::CMFriendIgnore& msg) void Player::_CMFriendDelete(f8::MsgHdr& hdr, const cs::CMFriendDelete& msg) { cs::SMFriendDelete respmsg; + Friend* p = GetFriendById(msg.friend_id()); + if (p) { + friend_hash_.erase(msg.friend_id()); + } + respmsg.set_friend_id(msg.friend_id()); SendMsg(respmsg); } @@ -289,3 +299,9 @@ void Player::SaveToDB() crc32_code ); } + +Friend* Player::GetFriendById(const std::string& friend_id) +{ + auto itr = friend_hash_.find(friend_id); + return itr != friend_hash_.end() ? &itr->second : nullptr; +} diff --git a/server/imserver/player.h b/server/imserver/player.h index 81ab436..92ac2a9 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -38,7 +38,8 @@ class Player } void _CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg); - void _CMFriendInvite(f8::MsgHdr& hdr, const cs::CMFriendInvite& msg); + void _CMFriendApply(f8::MsgHdr& hdr, const cs::CMFriendApply& msg); + void _CMFriendApplyList(f8::MsgHdr& hdr, const cs::CMFriendApplyList& msg); void _CMFriendIgnore(f8::MsgHdr& hdr, const cs::CMFriendIgnore& msg); void _CMFriendDelete(f8::MsgHdr& hdr, const cs::CMFriendDelete& msg); @@ -61,6 +62,7 @@ private: void FillIMMsgConext(f8::MsgHdr& hdr, ss::MFIMMsgConext* conext); void ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code); void SaveToDB(); + Friend* GetFriendById(const std::string& friend_id); private: bool dirty_ = false; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index ea128ab..42b9b0c 100644 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -69,55 +69,88 @@ message SMLogin optional string error_msg = 2; } +//获取好友列表 message CMFriendList { } +//好友列表回复 message SMFriendList { - optional int32 error_code = 1; - optional string error_msg = 2; - repeated MFUserInfo friend_list = 3; + optional int32 error_code = 1; //错误消息 + optional string error_msg = 2; //错误消息 + repeated MFUserInfo friend_list = 3; //好友列表 } -message CMFriendInvite +//好友申请 +message CMFriendApply { - optional string friend_id = 1; - optional string invite_msg = 2; + optional string friend_id = 1; //好友id + optional string msg = 2; //消息 } -message SMFriendInvite +//好友申请回复 +message SMFriendApply { - optional int32 error_code = 1; - optional string error_msg = 2; + optional int32 error_code = 1; // + optional string error_msg = 2; //消息描述 } +//获取好友申请列表 +message CMFriendApplyList +{ +} +//获取好友申请列表回复 +message SMFriendApplyList +{ + optional int32 error_code = 1; // + optional string error_msg = 2; //错误消息 +} + +//同意申请 message CMFriendAgree { - optional string friend_id = 1; + optional string friend_id = 1; //好友id } +//同意申请回复 message SMFriendAgree { - optional int32 error_code = 1; - optional string error_msg = 2; + optional int32 error_code = 1; // + optional string error_msg = 2; //错误消息 } +//忽略好友申请 message CMFriendIgnore { - optional string friend_id = 1; + optional string friend_id = 1; //好友id } +//忽略好友申请回复 message SMFriendIgnore { - optional int32 error_code = 1; - optional string error_msg = 2; + optional int32 error_code = 1; // + optional string error_msg = 2; //错误消息 } +//删除好友 message CMFriendDelete { - optional string friend_id = 1; + optional string friend_id = 1; //好友id } +//删除好友回复 message SMFriendDelete { - optional int32 error_code = 1; - optional string error_msg = 2; + optional int32 error_code = 1; // + optional string error_msg = 2; //错误消息 + optional string friend_id = 3; //好友id +} + +//获取黑名单列表 +message CMFriendBlackList +{ +} +//获取黑名单回复 +message SMFriendBlackList +{ + optional int32 error_code = 1; // + optional string error_msg = 2; //错误消息 } //建群 diff --git a/sql/relationdb_n.sql b/sql/relationdb_n.sql index a81e733..0f252c1 100644 --- a/sql/relationdb_n.sql +++ b/sql/relationdb_n.sql @@ -101,6 +101,26 @@ CREATE TABLE `friend_apply` ( /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; +-- Table structure for table `event` +-- + +DROP TABLE IF EXISTS `event`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `event` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '事件接受方id', + `event_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '事件名', + `param1` tinyblob COMMENT 'param1', + `param2` tinyblob COMMENT 'param2', + `param3` tinyblob COMMENT 'param3', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + PRIMARY KEY (`idx`), + KEY `account_id` (`account_id`), +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;