This commit is contained in:
aozhiwei 2020-09-17 16:30:13 +08:00
parent f3a85ea51f
commit 61d221b324
2 changed files with 36 additions and 17 deletions

View File

@ -1,6 +1,7 @@
#include "precompile.h"
#include <a8/timer.h>
#include <a8/mutable_xobject.h>
#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,

View File

@ -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: