From 729e7934a78208cdd7903b213ec8bad54c9b9e67 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 12 Oct 2020 11:56:38 +0800 Subject: [PATCH] 1 --- server/imserver/dbhelper.cc | 24 ++++++++++++++++++++++++ server/imserver/dbhelper.h | 1 + server/imserver/guild.cc | 7 ++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/server/imserver/dbhelper.cc b/server/imserver/dbhelper.cc index 6dd0297..d50774b 100644 --- a/server/imserver/dbhelper.cc +++ b/server/imserver/dbhelper.cc @@ -197,6 +197,30 @@ void DBHelper::ConfirmGuild(Player* hum, long long guild_id) ); } +void DBHelper::UpdateUserGuild(const std::string& account_id, long long guild_id, int guild_job) +{ + unsigned int crc32_code = a8::openssl::Crc32 + ( + (unsigned char*)account_id.data(), + account_id.size() + ); + a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(crc32_code); + DBEngine::Instance()->ExecAsyncScript + ( + conn_info, + "UPDATE `user` SET guild_id=%d WHERE guild_job='%d' WHERE account_id='%s';", + { + guild_id, + guild_job, + account_id + }, + a8::XParams(), + nullptr, + nullptr, + crc32_code + ); +} + void DBHelper::AddFriendApply(Player* hum, const std::string& target_id) { auto on_ok = diff --git a/server/imserver/dbhelper.h b/server/imserver/dbhelper.h index 8396783..957eda0 100644 --- a/server/imserver/dbhelper.h +++ b/server/imserver/dbhelper.h @@ -38,6 +38,7 @@ class DBHelper : public a8::Singleton long long guild_id, int status); void ConfirmGuild(Player* hum, long long guild_id); + void UpdateUserGuild(const std::string& account_id, long long guild_id, int guild_job); void AddFriendApply(Player* hum, const std::string& target_id); void AddGuildApply(Guild* guild, const cs::MFUserInfo& user_info); void AddEvent(const std::string& sender_id, diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index b55a659..7ec75c4 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -319,7 +319,7 @@ void Guild::_CMGuildAgree(f8::MsgHdr& hdr, const cs::CMGuildAgree& msg) DBEngine::Instance()->ExecAsyncQuery ( conn_info, - "SELECT guild_id, guild_job WHERE account_id='%s' AND guild_id != 0;", + "SELECT guild_id, guild_job FROM `user` WHERE account_id='%s' AND guild_id != 0;", { msg.apply().base_data().account_id() }, @@ -1488,4 +1488,9 @@ void Guild::GuildAgreeCb(int socket_handle, const ss::MFIMMsgConext& context, co kGuildApplyAgree ); ClearApplyBySenderId(msg.apply().base_data().account_id()); + SaveToDB(); + DBHelper::Instance()->UpdateUserGuild(member->account_id, + GuildId(), + GetMemberJob(member->account_id) + ); }