1
This commit is contained in:
parent
f5b1f1271e
commit
bf91b066fc
@ -63,3 +63,25 @@ a8::XObject DBEngine::GetConnInfo(long long data)
|
||||
a8::XObject conn_info;
|
||||
return conn_info;
|
||||
}
|
||||
|
||||
void DBEngine::UpdateFriendApplyIdx(long long crc32_code, long long new_idx)
|
||||
{
|
||||
friend_apply_idx_hash_[crc32_code] = new_idx;
|
||||
}
|
||||
|
||||
long long DBEngine::GetFriendApplyCurrIdx(long long crc32_code)
|
||||
{
|
||||
auto itr = friend_apply_idx_hash_.find(crc32_code);
|
||||
return itr != friend_apply_idx_hash_.end() ? itr->second : 0;
|
||||
}
|
||||
|
||||
void DBEngine::UpdateGroupApplyIdx(long long crc32_code, long long new_idx)
|
||||
{
|
||||
group_apply_idx_hash_[crc32_code] = new_idx;
|
||||
}
|
||||
|
||||
long long DBEngine::GetGroupApplyCurrIdx(long long crc32_code)
|
||||
{
|
||||
auto itr = group_apply_idx_hash_.find(crc32_code);
|
||||
return itr != group_apply_idx_hash_.end() ? itr->second : 0;
|
||||
}
|
||||
|
@ -31,4 +31,16 @@ class DBEngine : public a8::Singleton<DBEngine>
|
||||
|
||||
a8::XObject GetConnInfo(const std::string& data);
|
||||
a8::XObject GetConnInfo(long long data);
|
||||
|
||||
long long GetFriendApplyCurrIdx(long long crc32_code);
|
||||
long long GetGroupApplyCurrIdx(long long crc32_code);
|
||||
|
||||
private:
|
||||
void UpdateFriendApplyIdx(long long crc32_code, long long new_idx);
|
||||
void UpdateGroupApplyIdx(long long crc32_code, long long new_idx);
|
||||
|
||||
private:
|
||||
std::map<long long, long long> friend_apply_idx_hash_;
|
||||
std::map<long long, long long> group_apply_idx_hash_;
|
||||
|
||||
};
|
||||
|
@ -66,12 +66,87 @@ void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg)
|
||||
void Player::_CMFriendApply(f8::MsgHdr& hdr, const cs::CMFriendApply& msg)
|
||||
{
|
||||
cs::SMFriendApply respmsg;
|
||||
if (GetFriendById(msg.friend_id())) {
|
||||
respmsg.set_error_code(1);
|
||||
respmsg.set_error_msg("已经是好友");
|
||||
}
|
||||
SendMsg(respmsg);
|
||||
{
|
||||
auto on_ok =
|
||||
[] (a8::XParams& param, const f8::DataSet* data_set)
|
||||
{
|
||||
|
||||
};
|
||||
auto on_error =
|
||||
[] (a8::XParams& param, int error_code, const std::string& error_msg)
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
long long friend_crc32_code = a8::openssl::Crc32(
|
||||
(unsigned char*)msg.friend_id().data(),
|
||||
msg.friend_id().size()
|
||||
);
|
||||
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(friend_crc32_code);
|
||||
DBEngine::Instance()->
|
||||
ExecAsyncScript(
|
||||
conn_info,
|
||||
"INSERT INTO `friend_apply`(applyid, target_id, sender_id, sender_nickmake, "
|
||||
" sender_avatar_url, sender_sex, sender_group_id, sender_data_version1, "
|
||||
" createtime)"
|
||||
"VALUES(%d, '%s', '%s', '%s', '%s', %d, %d, %d, %d);",
|
||||
{
|
||||
App::Instance()->NewUUID(),
|
||||
msg.friend_id(),
|
||||
account_id,
|
||||
nickname,
|
||||
avatar_url,
|
||||
sex,
|
||||
group_id,
|
||||
data_version1,
|
||||
App::Instance()->nowtime
|
||||
},
|
||||
a8::XParams(),
|
||||
on_ok,
|
||||
on_error,
|
||||
friend_crc32_code
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_CMFriendApplyList(f8::MsgHdr& hdr, const cs::CMFriendApplyList& msg)
|
||||
{
|
||||
if (last_apply_idx_ > 0 &&
|
||||
last_apply_idx_ >= DBEngine::Instance()->GetFriendApplyCurrIdx(crc32_code)) {
|
||||
|
||||
}
|
||||
auto on_ok =
|
||||
[] (a8::XParams& param, const f8::DataSet* data_set)
|
||||
{
|
||||
|
||||
};
|
||||
auto on_error =
|
||||
[] (a8::XParams& param, int error_code, const std::string& error_msg)
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(crc32_code);
|
||||
DBEngine::Instance()->
|
||||
ExecAsyncScript(
|
||||
conn_info,
|
||||
"SELECT idx, applyid, target_id, sender_id, sender_nickname, "
|
||||
" sender_avatar_url, sender_sex, sender_group_id, sender_data_version1 "
|
||||
"FROM friend_apply WHERE %d > idx AND target_id='%s';",
|
||||
{
|
||||
last_apply_idx_,
|
||||
account_id
|
||||
},
|
||||
a8::XParams(),
|
||||
on_ok,
|
||||
on_error,
|
||||
crc32_code
|
||||
);
|
||||
}
|
||||
|
||||
void Player::_CMFriendIgnore(f8::MsgHdr& hdr, const cs::CMFriendIgnore& msg)
|
||||
|
@ -70,6 +70,7 @@ private:
|
||||
private:
|
||||
bool dirty_ = false;
|
||||
timer_list* dirty_timer_ = nullptr;
|
||||
long long last_apply_idx_ = 0;
|
||||
|
||||
std::map<std::string, Friend> friend_hash_;
|
||||
};
|
||||
|
@ -90,7 +90,7 @@ message CMFriendApply
|
||||
//好友申请回复
|
||||
message SMFriendApply
|
||||
{
|
||||
optional int32 error_code = 1; //
|
||||
optional int32 error_code = 1; //1:已经是好友
|
||||
optional string error_msg = 2; //消息描述
|
||||
}
|
||||
|
||||
|
@ -92,11 +92,12 @@ CREATE TABLE `friend_apply` (
|
||||
`sender_avatar_url` varchar(256) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '',
|
||||
`sender_sex` int(11) NOT NULL DEFAULT '0' COMMENT 'sex',
|
||||
`sender_group_id` bigint NOT NULL COMMENT 'group_id',
|
||||
`sender_data_version1` int(11) NOT NULL DEFAULT '0' COMMENT 'data_version1',
|
||||
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||
PRIMARY KEY (`idx`),
|
||||
UNIQUE KEY `applyid` (`applyid`),
|
||||
KEY `target_id` (`target_id`),
|
||||
KEY `target_sender` (`target_id`, `sender_id`)
|
||||
KEY `target_sender` (`sender_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 */;
|
||||
|
Loading…
x
Reference in New Issue
Block a user