This commit is contained in:
aozhiwei 2020-09-16 20:33:26 +08:00
parent d636f8e31e
commit 7e139d9d62
3 changed files with 100 additions and 39 deletions

View File

@ -41,6 +41,7 @@ struct timer_list;
class Guild class Guild
{ {
public: public:
int gameid = 0;
long long guild_id = 0; long long guild_id = 0;
std::string guild_name; std::string guild_name;
int guild_lv = 0; int guild_lv = 0;
@ -50,7 +51,11 @@ class Guild
std::string guild_notice; std::string guild_notice;
std::string guild_declaration; std::string guild_declaration;
std::string owner_id; std::string owner_id;
std::string owner_name;
std::string owner_avatar_url;
std::string creator_id; std::string creator_id;
std::string creator_name;
std::string creator_avatar_url;
int guild_status = 0; int guild_status = 0;
int createtime = 0; int createtime = 0;
a8::TimerAttacher timer_attacher; a8::TimerAttacher timer_attacher;

View File

@ -309,6 +309,32 @@ void GuildMgr::LoadGuild(long long guild_id)
{ {
GuildMgr::Instance()->pending_guild_hash_.erase(param.sender); GuildMgr::Instance()->pending_guild_hash_.erase(param.sender);
if (data_set) { if (data_set) {
for (auto& row : *data_set) {
GuildMgr::Instance()->CreateGuild
(
a8::XValue(row[0]), //gameid
a8::XValue(row[1]), //guild_id
row[3], //guild_name
a8::XValue(row[4]), //guild_lv
a8::XValue(row[5]), //guild_exp
a8::XValue(row[6]), //guild_badge
a8::XValue(row[7]), //guild_apply_num
row[8], //guild_administers
row[9], //guild_notice
row[10], //guild_declaration
row[11], //guild_log
row[12], //owner_id
row[13], //owner_name
row[14], //owner_avatar_url
row[15], //creator_id
row[16], //creator_name
row[17], //creator_avatar_url
row[18], //guild_data
a8::XValue(19), //guild_status
a8::XValue(20) //createtime
);
break;
}
} }
}; };
auto on_error = auto on_error =
@ -319,7 +345,9 @@ void GuildMgr::LoadGuild(long long guild_id)
if (itr != GuildMgr::Instance()->task_hash_.end()) { if (itr != GuildMgr::Instance()->task_hash_.end()) {
for (auto task : itr->second) { for (auto task : itr->second) {
task->OnError(); task->OnError();
delete task;
} }
GuildMgr::Instance()->task_hash_.erase(itr);
} }
}; };
@ -328,8 +356,9 @@ void GuildMgr::LoadGuild(long long guild_id)
( (
conn_info, conn_info,
"SELECT gameid, guild_id, guild_name, guild_lv, guild_exp, guild_badge, guild_apply_num, " "SELECT gameid, guild_id, guild_name, guild_lv, guild_exp, guild_badge, guild_apply_num, "
" guild_administers, guild_notice, guild_declaration, guild_log, owner_id, owner_name, " " guild_administers, guild_notice, guild_declaration, guild_log, "
" creator_id, guild_data, guild_status, createtime " " owner_id, owner_name, owner_avatar_url, "
" creator_id, creator_name, creator_avatar_url, guild_data, guild_status, createtime "
"WHERE guild_id=%d;", "WHERE guild_id=%d;",
{ {
guild_id guild_id
@ -365,24 +394,48 @@ void GuildMgr::ForwardGuildSMMsg(int socket_handle,
IMListener::Instance()->SendMsg(socket_handle, msg); IMListener::Instance()->SendMsg(socket_handle, msg);
} }
Guild* GuildMgr::CreateGuild(int gameid, void GuildMgr::CreateGuild(int gameid,
long long guild_id, long long guild_id,
const std::string& guild_name, const std::string& guild_name,
int guild_lv, int guild_lv,
int guild_exp, int guild_exp,
int guild_badge, int guild_badge,
int guild_apply_num, int guild_apply_num,
const std::string& guild_administers, const std::string& guild_administers,
const std::string& guild_notice, const std::string& guild_notice,
const std::string& guild_declaration, const std::string& guild_declaration,
const std::string& guild_log, const std::string& guild_log,
const std::string& owner_id, const std::string& owner_id,
const std::string& owner_name, const std::string& owner_name,
const std::string& creator_id, const std::string& owner_avatar_url,
const std::string& guild_data, const std::string& creator_id,
int guild_status, const std::string& creator_name,
int createtime const std::string& creator_avatar_url,
) const std::string& guild_data,
int guild_status,
int createtime
)
{ {
return nullptr; if (GetGuild(guild_id)) {
abort();
}
Guild* guild = new Guild;
guild->gameid = gameid;
guild->guild_id = guild_id;
guild->guild_name = guild_name;
guild->guild_lv = guild_lv;
guild->guild_exp = guild_exp;
guild->guild_badge = guild_badge;
guild->guild_apply_num = guild_apply_num;
guild->guild_notice = guild_notice;
guild->guild_declaration = guild_declaration;
guild->owner_id = owner_id;
guild->owner_name = owner_name;
guild->owner_avatar_url = owner_avatar_url;
guild->creator_id = creator_id;
guild->creator_name = creator_name;
guild->creator_avatar_url = creator_avatar_url;
guild->guild_status = guild_status;
guild->createtime = createtime;
id_hash_[guild_id] = guild;
} }

View File

@ -50,24 +50,27 @@ class GuildMgr : public a8::Singleton<GuildMgr>
void LoadGuild(long long guild_id); void LoadGuild(long long guild_id);
bool IsValidGuildId(long long guild_id); bool IsValidGuildId(long long guild_id);
Guild* GetGuild(long long guild_id); Guild* GetGuild(long long guild_id);
Guild* CreateGuild(int gameid, void CreateGuild(int gameid,
long long guild_id, long long guild_id,
const std::string& guild_name, const std::string& guild_name,
int guild_lv, int guild_lv,
int guild_exp, int guild_exp,
int guild_badge, int guild_badge,
int guild_apply_num, int guild_apply_num,
const std::string& guild_administers, const std::string& guild_administers,
const std::string& guild_notice, const std::string& guild_notice,
const std::string& guild_declaration, const std::string& guild_declaration,
const std::string& guild_log, const std::string& guild_log,
const std::string& owner_id, const std::string& owner_id,
const std::string& owner_name, const std::string& owner_name,
const std::string& creator_id, const std::string& owner_avatar_url,
const std::string& guild_data, const std::string& creator_id,
int guild_status, const std::string& creator_name,
int createtime const std::string& creator_avatar_url,
); const std::string& guild_data,
int guild_status,
int createtime
);
private: private:
std::map<long long, Guild*> id_hash_; std::map<long long, Guild*> id_hash_;