重构friend_apply

This commit is contained in:
aozhiwei 2020-06-18 16:19:56 +08:00
parent e0d0382d26
commit 41f108e402
3 changed files with 130 additions and 81 deletions

View File

@ -1,8 +1,12 @@
#include "precompile.h"
#include <a8/openssl.h>
#include "dbengine.h"
#include "dbhelper.h"
#include "player.h"
#include "app.h"
void DBHelper::Init()
{
@ -11,3 +15,96 @@ void DBHelper::Init()
void DBHelper::UnInit()
{
}
void DBHelper::SetFriendApplyStatus(
unsigned int crc32_code,
const std::string& sender_id,
const std::string& target_id,
int status)
{
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(crc32_code);
DBEngine::Instance()->ExecAsyncScript
(
conn_info,
"UPDATE `friend_apply` SET status=%d WHERE target_id='%s' AND sender_id='%s';",
{
status,
target_id,
sender_id
},
a8::XParams(),
nullptr,
nullptr,
crc32_code
);
}
void DBHelper::SetFriendApplyStatus(
unsigned int crc32_code,
long long idx,
const std::string& sender_id,
const std::string& target_id,
int status)
{
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(crc32_code);
DBEngine::Instance()->ExecAsyncScript
(
conn_info,
"UPDATE `friend_apply` SET status=%d WHERE idx=%d AND target_id='%s' AND sender_id='%s';",
{
idx,
status,
target_id,
sender_id
},
a8::XParams(),
nullptr,
nullptr,
crc32_code
);
}
void DBHelper::AddFriendApply(Player* hum, const std::string& target_id)
{
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*)target_id.data(),
target_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_nickname, "
" sender_avatar_url, sender_sex, sender_data_version1, "
" createtime, sender_user_value1, sender_user_value2, sender_user_value3, status)"
"VALUES(%d, '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, 0);",
{
App::Instance()->NewUUID(),
target_id,
hum->myself.base_data.account_id,
hum->myself.base_data.nickname,
hum->myself.base_data.avatar_url,
hum->myself.base_data.sex,
hum->myself.base_data.base_data_version,
hum->myself.base_data.user_value1,
hum->myself.base_data.user_value2,
hum->myself.base_data.user_value3,
App::Instance()->nowtime
},
a8::XParams(),
on_ok,
on_error,
friend_crc32_code
);
}

View File

@ -1,5 +1,6 @@
#pragma once
class Player;
class DBHelper : public a8::Singleton<DBHelper>
{
private:
@ -10,5 +11,18 @@ class DBHelper : public a8::Singleton<DBHelper>
void Init();
void UnInit();
void SetFriendApplyStatus(
unsigned int crc32_code,
const std::string& sender_id,
const std::string& target_id,
int status);
void SetFriendApplyStatus(
unsigned int crc32_code,
long long idx,
const std::string& sender_id,
const std::string& target_id,
int status);
void AddFriendApply(Player* hum, const std::string& target_id);
};

View File

@ -10,6 +10,7 @@
#include "dbengine.h"
#include "MSConnMgr.h"
#include "dbengine.h"
#include "dbhelper.h"
#include "app.h"
#include "typeconvert.h"
#include "playermgr.h"
@ -133,49 +134,7 @@ void Player::_CMFriendApply(f8::MsgHdr& hdr, const cs::CMFriendApply& msg)
return;
}
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_nickname, "
" sender_avatar_url, sender_sex, sender_data_version1, "
" createtime, sender_user_value1, sender_user_value2, sender_user_value3, status)"
"VALUES(%d, '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, 0);",
{
App::Instance()->NewUUID(),
msg.friend_id(),
myself.base_data.account_id,
myself.base_data.nickname,
myself.base_data.avatar_url,
myself.base_data.sex,
myself.base_data.base_data_version,
myself.base_data.user_value1,
myself.base_data.user_value2,
myself.base_data.user_value3,
App::Instance()->nowtime
},
a8::XParams(),
on_ok,
on_error,
friend_crc32_code
);
}
DBHelper::Instance()->AddFriendApply(this, msg.friend_id());
}
void Player::_CMFriendApplyList(f8::MsgHdr& hdr, const cs::CMFriendApplyList& msg)
@ -298,19 +257,12 @@ void Player::_CMFriendAgree(f8::MsgHdr& hdr, const cs::CMFriendAgree& msg)
}
#endif
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(myself.crc32_code);
DBEngine::Instance()->ExecAsyncScript
DBHelper::Instance()->SetFriendApplyStatus
(
conn_info,
"UPDATE `friend_apply` SET status=1 WHERE target_id='%s' AND sender_id='%s';",
{
myself.crc32_code,
msg.apply().target_id(),
msg.apply().base_data().account_id(),
},
a8::XParams(),
nullptr,
nullptr,
myself.crc32_code
AccountId(),
1
);
}
@ -319,20 +271,13 @@ void Player::_CMFriendRefuse(f8::MsgHdr& hdr, const cs::CMFriendRefuse& msg)
cs::SMFriendRefuse respmsg;
SendMsg(respmsg);
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(myself.crc32_code);
DBEngine::Instance()->ExecAsyncScript
DBHelper::Instance()->SetFriendApplyStatus
(
conn_info,
"UPDATE `friend_apply` SET status=2 WHERE idx=%d AND target_id='%s' AND sender_id='%s';",
{
myself.crc32_code,
msg.apply().idx(),
msg.apply().target_id(),
msg.apply().base_data().account_id(),
},
a8::XParams(),
nullptr,
nullptr,
myself.crc32_code
AccountId(),
2
);
}
@ -341,20 +286,13 @@ void Player::_CMFriendIgnore(f8::MsgHdr& hdr, const cs::CMFriendIgnore& msg)
cs::SMFriendIgnore respmsg;
SendMsg(respmsg);
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(myself.crc32_code);
DBEngine::Instance()->ExecAsyncScript
DBHelper::Instance()->SetFriendApplyStatus
(
conn_info,
"UPDATE `friend_apply` SET status=3 WHERE idx=%d AND target_id='%s' AND sender_id='%s';",
{
myself.crc32_code,
msg.apply().idx(),
msg.apply().target_id(),
msg.apply().base_data().account_id(),
},
a8::XParams(),
nullptr,
nullptr,
myself.crc32_code
AccountId(),
3
);
}