This commit is contained in:
aozhiwei 2020-10-14 13:34:57 +08:00
parent 397808c1d2
commit 59f8b0ac36
2 changed files with 25 additions and 2 deletions

View File

@ -30,11 +30,26 @@ enum GuildApplyStatus_e
void Guild::Init() void Guild::Init()
{ {
last_active_time_ = App::Instance()->nowtime;
last_saveok_time_ = App::Instance()->nowtime;
logdb_ = new ss::MFGuildLogDB; logdb_ = new ss::MFGuildLogDB;
for (size_t i = 0; i < kGuildJobMax; ++i) { for (size_t i = 0; i < kGuildJobMax; ++i) {
job_hash_.push_back(std::set<std::string>()); job_hash_.push_back(std::set<std::string>());
} }
RecalcRedPoint(); RecalcRedPoint();
a8::Timer::Instance()->AddRepeatTimerAndAttach
(
1000 * 60,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Guild* guild = (Guild*)param.sender.GetUserData();
if (App::Instance()->nowtime - guild->last_active_time_ < 300) {
guild->SaveToDB();
}
},
&timer_attacher_.timer_list_);
} }
void Guild::UnInit() void Guild::UnInit()
@ -1014,6 +1029,7 @@ void Guild::UpdateMemberOffline(const std::string& account_id)
void Guild::Active() void Guild::Active()
{ {
last_active_time_ = App::Instance()->nowtime;
if (App::Instance()->nowtime - last_query_member_time_ > 15) { if (App::Instance()->nowtime - last_query_member_time_ > 15) {
QueryMemberOnlineState(); QueryMemberOnlineState();
last_query_member_time_ = App::Instance()->nowtime; last_query_member_time_ = App::Instance()->nowtime;
@ -1121,7 +1137,10 @@ void Guild::SaveToDB()
auto on_ok = auto on_ok =
[] (a8::XParams& param, const f8::DataSet* data_set) [] (a8::XParams& param, const f8::DataSet* data_set)
{ {
Guild* guild = GuildMgr::Instance()->GetGuild(param.sender);
if (guild) {
guild->last_saveok_time_ = App::Instance()->nowtime;
}
}; };
auto on_error = auto on_error =
[] (a8::XParams& param, int error_code, const std::string& error_msg) [] (a8::XParams& param, int error_code, const std::string& error_msg)
@ -1165,7 +1184,8 @@ void Guild::SaveToDB()
guild_status_ == kGuildDismissed ? GuildId() : 0, guild_status_ == kGuildDismissed ? GuildId() : 0,
guild_id_ guild_id_
}, },
a8::XParams(), a8::XParams()
.SetSender(GuildId()),
on_ok, on_ok,
on_error, on_error,
guild_id_ guild_id_

View File

@ -118,6 +118,9 @@ private:
time_t last_query_member_time_ = 0; time_t last_query_member_time_ = 0;
a8::TimerAttacher timer_attacher_; a8::TimerAttacher timer_attacher_;
time_t last_active_time_ = 0;
time_t last_saveok_time_ = 0;
public: public:
static Guild* CreateGuild(int gameid, static Guild* CreateGuild(int gameid,
long long guild_id, long long guild_id,