51 lines
994 B
C++
51 lines
994 B
C++
#pragma once
|
|
|
|
#include <a8/timer_attacher.h>
|
|
|
|
struct GroupMember
|
|
{
|
|
std::string account_id;
|
|
std::string nickname;
|
|
std::string avatar_url;
|
|
int sex = 0;
|
|
int online = 0;
|
|
long long group_id = 0;
|
|
int data_version1 = 0;
|
|
};
|
|
|
|
namespace cs
|
|
{
|
|
class MFGroupDB;
|
|
}
|
|
|
|
struct timer_list;
|
|
class Group
|
|
{
|
|
public:
|
|
long long group_id = 0;
|
|
std::string group_name;
|
|
std::string owner_id;
|
|
std::string creator_id;
|
|
int createtime = 0;
|
|
a8::TimerAttacher timer_attacher;
|
|
|
|
void Init();
|
|
void UnInit();
|
|
|
|
bool IsFull();
|
|
void Rename(const std::string& new_group_name);
|
|
GroupMember* GetMember(const std::string& account_id);
|
|
void AddMember(GroupMember* member);
|
|
void RemoveMember(const std::string& account_id);
|
|
void MarkDirty();
|
|
|
|
private:
|
|
void FillGroupDB(cs::MFGroupDB& group_dto);
|
|
void SaveToDB();
|
|
|
|
private:
|
|
bool dirty_ = false;
|
|
timer_list* dirty_timer_ = nullptr;
|
|
std::map<std::string, GroupMember*> member_hash_;
|
|
};
|