This commit is contained in:
aozhiwei 2020-05-13 10:27:31 +08:00
parent d4ed7af836
commit aa804c9371
4 changed files with 40 additions and 22 deletions

View File

@ -18,7 +18,6 @@ void Player::Init()
); );
SyncLocToMasterServer(); SyncLocToMasterServer();
NotifyOnline(); NotifyOnline();
AsyncGetFriendList();
} }
void Player::UnInit() void Player::UnInit()
@ -28,25 +27,39 @@ void Player::UnInit()
void Player::Deserialize(const cs::MFUserDB& user_db) void Player::Deserialize(const cs::MFUserDB& user_db)
{ {
for (auto& friend_db : user_db.friends()) {
Friend friendobj;
friendobj.account_id = friend_db.account_id();
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.crc32_code = a8::openssl::Crc32(
(unsigned char*)account_id.data(),
account_id.size()
);;
friend_hash_[friendobj.account_id] = friendobj;
}
} }
void Player::Serialize(cs::MFUserDB& user_db) void Player::Serialize(cs::MFUserDB& user_db)
{ {
for (auto& pair : friend_hash_) {
auto p = user_db.add_friends();
p->set_account_id(pair.second.account_id);
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);
}
} }
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;
if (friend_list_syncok_) { FillFriendList(respmsg.mutable_friend_list());
FillFriendList(respmsg.mutable_friend_list());
} else {
if (!reading_friends_list_) {
AsyncGetFriendList();
}
respmsg.set_error_code(1);
}
SendMsg(respmsg); SendMsg(respmsg);
} }
@ -175,10 +188,6 @@ void Player::NotifyOffline()
} }
void Player::AsyncGetFriendList()
{
}
void Player::FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list) void Player::FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list)
{ {
for (auto& pair : friend_hash_) { for (auto& pair : friend_hash_) {
@ -261,11 +270,17 @@ void Player::SaveToDB()
DBEngine::Instance()-> DBEngine::Instance()->
ExecAsyncScript( ExecAsyncScript(
conn_info, conn_info,
"UPDATE `user` SET friend_data='%s', modifytime=%d " "UPDATE `user` SET friend_data='%s', modifytime=%d, "
" nickname='%s', avatar_url='%s', sex=%d, group_id=%d, data_version1=%d "
"WHERE account_id='%s';", "WHERE account_id='%s';",
{ {
friend_data, friend_data,
App::Instance()->nowtime, App::Instance()->nowtime,
nickname,
avatar_url,
sex,
group_id,
data_version1,
account_id account_id
}, },
a8::XParams(), a8::XParams(),

View File

@ -57,7 +57,6 @@ class Player
void MarkDirty(); void MarkDirty();
private: private:
void AsyncGetFriendList();
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);
@ -68,6 +67,4 @@ private:
timer_list* dirty_timer_ = nullptr; timer_list* dirty_timer_ = nullptr;
std::map<std::string, Friend> friend_hash_; std::map<std::string, Friend> friend_hash_;
bool reading_friends_list_ = false;
bool friend_list_syncok_ = false;
}; };

View File

@ -19,6 +19,7 @@ struct Friend
std::string avatar_url; std::string avatar_url;
int sex = 0; int sex = 0;
int online = 0; int online = 0;
long long group_id = 0;
std::string server_host; std::string server_host;
int server_port; int server_port;

View File

@ -39,14 +39,19 @@ message MFGroupDB
repeated MFGroupMemberDB members = 1; repeated MFGroupMemberDB members = 1;
} }
message MFFriendDB1 message MFFriendDB
{ {
optional string account_id = 1;
optional string nickname = 2;
optional string avatar_url = 3;
optional int32 sex = 4;
optional int64 group_id = 5;
optional int32 data_version1 = 6;
} }
message MFUserDB message MFUserDB
{ {
repeated MFGroupMemberDB friends = 1;
} }
// //