From 61d221b3248f673864c4b2c150669488ed36465d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 17 Sep 2020 16:30:13 +0800 Subject: [PATCH] 1 --- server/imserver/guild.cc | 52 +++++++++++++++++++++++++++------------- server/imserver/guild.h | 1 + 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 05f0df6..eaebdc4 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -1,6 +1,7 @@ #include "precompile.h" #include +#include #include "guild.h" #include "cs_proto.pb.h" @@ -71,22 +72,22 @@ void Guild::MarkDirty() { if (!dirty_) { dirty_ = true; - dirty_timer_ = a8::Timer::Instance()-> - AddDeadLineTimerAndAttach(1000 * 60, - a8::XParams() - .SetSender((void*)this), - [] (const a8::XParams& param) - { - Guild* guild = (Guild*)param.sender.GetUserData(); - guild->SaveToDB(); - }, - &timer_attacher.timer_list_, - [] (const a8::XParams& param) - { - Guild* guild = (Guild*)param.sender.GetUserData(); - guild->dirty_timer_ = nullptr; - } - ); + dirty_timer_ = a8::Timer::Instance()->AddDeadLineTimerAndAttach + (1000 * 60, + a8::XParams() + .SetSender((void*)this), + [] (const a8::XParams& param) + { + Guild* guild = (Guild*)param.sender.GetUserData(); + guild->SaveToDB(); + }, + &timer_attacher.timer_list_, + [] (const a8::XParams& param) + { + Guild* guild = (Guild*)param.sender.GetUserData(); + guild->dirty_timer_ = nullptr; + } + ); } } @@ -161,10 +162,26 @@ void Guild::FillGuildDB(ss::MFGuildDB& guild_dto) } +void Guild::SerializeMembers(std::string& guild_members) +{ + a8::MutableXObject* members_xobj = a8::MutableXObject::NewArray(); + for (auto& pair : member_hash_) { + a8::MutableXObject* member_xobj = a8::MutableXObject::NewObject(); + member_xobj->SetVal("account_id", pair.second->account_id); + member_xobj->SetVal("nickname", pair.second->nickname); + member_xobj->SetVal("guild_job", pair.second->guild_job); + members_xobj->Push(*member_xobj); + delete member_xobj; + } + members_xobj->ToJsonStr(guild_members); + delete members_xobj; +} + void Guild::SaveToDB() { std::string guild_data; std::string guild_log; + std::string guild_members; { ss::MFGuildDB guild_db; FillGuildDB(guild_db); @@ -172,6 +189,7 @@ void Guild::SaveToDB() } { logdb_->SerializeToString(&guild_log); + SerializeMembers(guild_members); } auto on_ok = @@ -201,7 +219,7 @@ void Guild::SaveToDB() guild_exp, guild_badge, guild_apply_num, - "", + guild_members, guild_notice, guild_declaration, guild_log, diff --git a/server/imserver/guild.h b/server/imserver/guild.h index 3cd7494..a4aae64 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -74,6 +74,7 @@ private: void FillGuildBasic(cs::MFGuildBasic* guild_basic); void FillGuildDB(ss::MFGuildDB& guild_dto); + void SerializeMembers(std::string& guild_members); void SaveToDB(); private: