82 lines
3.2 KiB
C++
82 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include <a8/commonrank.h>
|
|
#include <a8/timer_attacher.h>
|
|
|
|
namespace cs
|
|
{
|
|
class MFGuildBasic;
|
|
}
|
|
|
|
struct timer_list;
|
|
class GuildMgr : public a8::Singleton<GuildMgr>
|
|
{
|
|
private:
|
|
GuildMgr() {};
|
|
friend class a8::Singleton<GuildMgr>;
|
|
|
|
public:
|
|
void Init();
|
|
void UnInit();
|
|
|
|
void __GuildCreate(f8::JsonHttpRequest* request);
|
|
void __GuildSearch(f8::JsonHttpRequest* request);
|
|
void __GuildDismiss(f8::JsonHttpRequest* request);
|
|
void __GuildUpdate(f8::JsonHttpRequest* request);
|
|
void __GuildRename(f8::JsonHttpRequest* request);
|
|
void __GuildRank(f8::JsonHttpRequest* request);
|
|
void __GuildConfirmed(f8::JsonHttpRequest* request);
|
|
void __GuildDirtyWordCheck(f8::JsonHttpRequest* request);
|
|
void __GuildDirtyWordReplace(f8::JsonHttpRequest* request);
|
|
void __GenTestData(f8::JsonHttpRequest* request);
|
|
|
|
private:
|
|
cs::MFGuildBasic* GetGuildById(long long guild_id);
|
|
cs::MFGuildBasic* GetGuildByName(int gameid,
|
|
int channel,
|
|
long long name_ext1,
|
|
long long name_ext2,
|
|
const std::string& guild_name);
|
|
a8::CommonRank<cs::MFGuildBasic>* GetGuildRank(int gameid);
|
|
a8::CommonRank<cs::MFGuildBasic>* GetGuildList(int gameid);
|
|
void AddGuild(cs::MFGuildBasic* guild);
|
|
void LoadGuild(int instance_id, long long last_idx);
|
|
void SyncGuild(int instance_id);
|
|
void OnOneDBDone(int instance_id);
|
|
void RefreshGuild(long long guild_id);
|
|
void GenGuildRank();
|
|
void UpdateGuild(cs::MFGuildBasic* new_guild);
|
|
void UpdateRank(cs::MFGuildBasic* guild);
|
|
void InstallSyncGuildTimer();
|
|
std::string GenGuildName(int gameid,
|
|
int channel,
|
|
long long name_ext1,
|
|
long long name_ext2,
|
|
const std::string& raw_name);
|
|
void GuildRename(cs::MFGuildBasic* guild, const std::string& new_raw_name);
|
|
void InternalSearch(const std::string& account_id,
|
|
std::set<long long>& applyed_guilds,
|
|
a8::MutableXObject* guild_list,
|
|
const std::string& search_name,
|
|
int curr_page,
|
|
int page_size,
|
|
int& total_count,
|
|
int& total_page);
|
|
std::set<long long>& ForceSearchCache(const std::string& account_id, const std::string& search_name);
|
|
|
|
private:
|
|
a8::TimerAttacher timer_attacher_;
|
|
bool load_done_ = false;
|
|
std::map<int, int> pending_db_hash_;
|
|
std::map<int, int> sync_db_hash_;
|
|
std::map<long long, cs::MFGuildBasic*> id_hash_;
|
|
std::map<std::string, cs::MFGuildBasic*> name_hash_;
|
|
std::map<long long, a8::CommonRank<cs::MFGuildBasic>> rank_list_;
|
|
std::map<long long, a8::CommonRank<cs::MFGuildBasic>> sorted_list_;
|
|
std::function<bool(const cs::MFGuildBasic*, const cs::MFGuildBasic*)> rank_cmp_func_;
|
|
std::function<bool(const cs::MFGuildBasic*, const cs::MFGuildBasic*)> sorted_cmp_func_;
|
|
std::map<std::string, std::tuple<timer_list*, std::string, std::set<long long>>> search_cache_;
|
|
|
|
friend void DbToGuildBasic(const std::vector<std::string>& row, cs::MFGuildBasic* guild);
|
|
};
|