diff --git a/server/imserver/dbhelper.cc b/server/imserver/dbhelper.cc index a3bae79..076b285 100644 --- a/server/imserver/dbhelper.cc +++ b/server/imserver/dbhelper.cc @@ -1,8 +1,12 @@ #include "precompile.h" +#include + #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 + ); +} diff --git a/server/imserver/dbhelper.h b/server/imserver/dbhelper.h index eac8339..5072613 100644 --- a/server/imserver/dbhelper.h +++ b/server/imserver/dbhelper.h @@ -1,5 +1,6 @@ #pragma once +class Player; class DBHelper : public a8::Singleton { private: @@ -10,5 +11,18 @@ class DBHelper : public a8::Singleton 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); + }; diff --git a/server/imserver/player.cc b/server/imserver/player.cc index 0055314..445b562 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -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';", - { - msg.apply().target_id(), - msg.apply().base_data().account_id(), - }, - a8::XParams(), - nullptr, - nullptr, - myself.crc32_code + myself.crc32_code, + msg.apply().target_id(), + 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';", - { - msg.apply().idx(), - msg.apply().target_id(), - msg.apply().base_data().account_id(), - }, - a8::XParams(), - nullptr, - nullptr, - myself.crc32_code + myself.crc32_code, + msg.apply().idx(), + msg.apply().target_id(), + 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';", - { - msg.apply().idx(), - msg.apply().target_id(), - msg.apply().base_data().account_id(), - }, - a8::XParams(), - nullptr, - nullptr, - myself.crc32_code + myself.crc32_code, + msg.apply().idx(), + msg.apply().target_id(), + AccountId(), + 3 ); }