This commit is contained in:
aozhiwei 2020-07-01 21:07:34 +08:00
parent bc0e7ef7e0
commit 63f5520ae8

View File

@ -57,7 +57,38 @@ struct RecommandFriendTask
void Done()
{
if (context.IsValid()) {
std::set<std::string>& exclude_account_ids = context.hum->GetExcludeAccountIds();
std::set<std::string> batch_account_ids;
cs::SMRecommandFriend msg;
for (auto& pair : recommand_friends) {
if (msg.friend_list_size() < 4) {
*msg.add_friend_list() = pair.second;
exclude_account_ids.insert(pair.first);
batch_account_ids.insert(pair.first);
}
}
std::shuffle(DBHelper::Instance()->cache_users_list.begin(),
DBHelper::Instance()->cache_users_list.end(),
std::default_random_engine(rand()));
for (auto& user_info : DBHelper::Instance()->cache_users_list) {
if (msg.friend_list_size() >= 4) {
break;
}
if (exclude_account_ids.find(user_info->base_data().account_id()) ==
exclude_account_ids.end()) {
*msg.add_friend_list() = *user_info;
exclude_account_ids.insert(user_info->base_data().account_id());
batch_account_ids.insert(user_info->base_data().account_id());
}
}
if (exclude_account_ids.size() > 50) {
std::vector<std::string> deleted_account_ids;
for (auto& account_id : exclude_account_ids) {
if (batch_account_ids.find(account_id) == batch_account_ids.end()) {
deleted_account_ids.push_back(account_id);
}
}
}
context.hum->SendMsg(msg);
}
}