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

View File

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

View File

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

View File

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

View File

@ -39,7 +39,12 @@ message MFGroupDB
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 '',
`sex` int(11) NOT NULL DEFAULT '0' COMMENT 'sex',
`group_id` bigint NOT NULL COMMENT 'group_id',
`friend_data` mediumblob COMMENT '好友数据',
`data_version1` int(11) NOT NULL DEFAULT '0' COMMENT 'data_version1',
`createtime` 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 */;
/*!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`
--