This commit is contained in:
aozhiwei 2020-05-12 19:01:41 +08:00
parent 7f9bc2b4f5
commit d4ed7af836
6 changed files with 37 additions and 39 deletions

View File

@ -26,6 +26,16 @@ void Player::UnInit()
timer_attacher.ClearTimerList(); timer_attacher.ClearTimerList();
} }
void Player::Deserialize(const cs::MFUserDB& user_db)
{
}
void Player::Serialize(cs::MFUserDB& user_db)
{
}
void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg) void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg)
{ {
cs::SMFriendList respmsg; cs::SMFriendList respmsg;
@ -229,17 +239,12 @@ void Player::MarkDirty()
} }
} }
void Player::FillFriendDB(cs::MFFriendDB& friend_db)
{
}
void Player::SaveToDB() void Player::SaveToDB()
{ {
cs::MFFriendDB friend_db; cs::MFUserDB user_db;
FillFriendDB(friend_db); Serialize(user_db);
std::string friend_data; std::string friend_data;
friend_db.SerializeToString(&friend_data); user_db.SerializeToString(&friend_data);
auto on_ok = auto on_ok =
[] (a8::XParams& param, const f8::DataSet* data_set) [] (a8::XParams& param, const f8::DataSet* data_set)
@ -256,17 +261,12 @@ void Player::SaveToDB()
DBEngine::Instance()-> DBEngine::Instance()->
ExecAsyncScript( ExecAsyncScript(
conn_info, conn_info,
"INSERT `friend`(account_id, friend_data, createtime, modifytime) " "UPDATE `user` SET friend_data='%s', modifytime=%d "
"VALUES('%s', '%s', %d, %d) " "WHERE account_id='%s';",
"ON DUPLICATE KEY UPDATE friend_data='%s', modifytime=%d; ",
{ {
account_id,
friend_data, friend_data,
App::Instance()->nowtime, App::Instance()->nowtime,
App::Instance()->nowtime, account_id
friend_data,
App::Instance()->nowtime
}, },
a8::XParams(), a8::XParams(),
on_ok, on_ok,

View File

@ -28,6 +28,9 @@ class Player
void Init(); void Init();
void UnInit(); void UnInit();
void Deserialize(const cs::MFUserDB& friend_db);
void Serialize(cs::MFUserDB& friend_db);
template <typename T> template <typename T>
void SendMsg(T& msg) void SendMsg(T& msg)
{ {
@ -58,7 +61,6 @@ private:
void FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list); void FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list);
void FillIMMsgConext(f8::MsgHdr& hdr, ss::MFIMMsgConext* conext); void FillIMMsgConext(f8::MsgHdr& hdr, ss::MFIMMsgConext* conext);
void ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code); void ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code);
void FillFriendDB(cs::MFFriendDB& friend_db);
void SaveToDB(); void SaveToDB();
private: private:

View File

@ -160,8 +160,8 @@ void PlayerMgr::AsyncLogin1(const cs::CMLogin& msg)
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(msg.account_id()); a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(msg.account_id());
DBEngine::Instance()->ExecAsyncScript(conn_info, DBEngine::Instance()->ExecAsyncScript(conn_info,
"INSERT INTO `user`(account_id, nickname, avatar_url," "INSERT INTO `user`(account_id, nickname, avatar_url,"
" sex, createtime, modifytime, registertime)" " sex, friend_data, createtime, modifytime, registertime)"
"VALUES ('%s', '%s', '%s', %d, %d, %d, %d)" "VALUES ('%s', '%s', '%s', %d, '', %d, %d, %d)"
"ON DUPLICATE KEY UPDATE nickname='%s', avatar_url='%s'," "ON DUPLICATE KEY UPDATE nickname='%s', avatar_url='%s',"
" sex=%d, last_logintime=%d;", " sex=%d, last_logintime=%d;",
{ {
@ -206,6 +206,7 @@ void PlayerMgr::AsyncLogin2(const cs::CMLogin& msg)
data_set->at(0).at(2), data_set->at(0).at(2),
a8::XValue(data_set->at(0).at(3)), a8::XValue(data_set->at(0).at(3)),
a8::XValue(data_set->at(0).at(4)), a8::XValue(data_set->at(0).at(4)),
a8::XValue(data_set->at(0).at(6)),
a8::XValue(data_set->at(0).at(5)) a8::XValue(data_set->at(0).at(5))
); );
} }
@ -228,7 +229,7 @@ void PlayerMgr::AsyncLogin2(const cs::CMLogin& msg)
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(msg.account_id()); a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(msg.account_id());
DBEngine::Instance()->ExecAsyncQuery(conn_info, DBEngine::Instance()->ExecAsyncQuery(conn_info,
"SELECT account_id, nickname, avatar_url, sex, group_id, " "SELECT account_id, nickname, avatar_url, sex, group_id, "
" data_version1 " " data_version1, user_db "
"FROM `user` WHERE account_id='%s';", "FROM `user` WHERE account_id='%s';",
{ {
msg.account_id(), msg.account_id(),
@ -247,6 +248,7 @@ void PlayerMgr::AsyncLoginOnOk(const std::string& account_id,
const std::string& avatar_url, const std::string& avatar_url,
int sex, int sex,
long long group_id, long long group_id,
const std::string& friend_data,
int data_version1) int data_version1)
{ {
f8::MsgHdr* hdr = GetHdrByAccountId(account_id); f8::MsgHdr* hdr = GetHdrByAccountId(account_id);
@ -269,6 +271,11 @@ void PlayerMgr::AsyncLoginOnOk(const std::string& account_id,
hum->group_id = group_id; hum->group_id = group_id;
hum->data_version1 = data_version1; hum->data_version1 = data_version1;
hum->Init(); hum->Init();
{
cs::MFUserDB user_db;
user_db.ParseFromString(friend_data);
hum->Deserialize(user_db);
}
socket_hash_[hdr->socket_handle] = hum; socket_hash_[hdr->socket_handle] = hum;
accountid_hash_[account_id] = hum; accountid_hash_[account_id] = hum;
} }

View File

@ -50,6 +50,7 @@ class PlayerMgr : public a8::Singleton<PlayerMgr>
const std::string& avatar_url, const std::string& avatar_url,
int sex, int sex,
long long group_id, long long group_id,
const std::string& friend_data,
int data_version1); int data_version1);
void AsyncLoginOnError(const std::string& account_id, void AsyncLoginOnError(const std::string& account_id,
int step, int step,

View File

@ -39,7 +39,12 @@ message MFGroupDB
repeated MFGroupMemberDB members = 1; repeated MFGroupMemberDB members = 1;
} }
message MFFriendDB message MFFriendDB1
{
}
message MFUserDB
{ {
} }

View File

@ -43,6 +43,7 @@ CREATE TABLE `user` (
`avatar_url` varchar(256) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '', `avatar_url` varchar(256) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '',
`sex` int(11) NOT NULL DEFAULT '0' COMMENT 'sex', `sex` int(11) NOT NULL DEFAULT '0' COMMENT 'sex',
`group_id` bigint NOT NULL COMMENT 'group_id', `group_id` bigint NOT NULL COMMENT 'group_id',
`friend_data` mediumblob COMMENT '好友数据',
`data_version1` int(11) NOT NULL DEFAULT '0' COMMENT 'data_version1', `data_version1` int(11) NOT NULL DEFAULT '0' COMMENT 'data_version1',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
@ -76,24 +77,6 @@ CREATE TABLE `group` (
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-- Table structure for table `friend`
--
DROP TABLE IF EXISTS `friend`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `friend` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'account_id',
`friend_data` mediumblob COMMENT '群数据',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` 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 */;
-- Table structure for table `friend_apply` -- Table structure for table `friend_apply`
-- --