1
This commit is contained in:
parent
1bcc82aef3
commit
7de769b4b6
@ -453,6 +453,11 @@ void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg
|
||||
GetMemberJob(member->account_id),
|
||||
*member,
|
||||
*(p->mutable_base_data()));
|
||||
TypeConvert::Convert(member->temp_custom_data, *p->mutable_temp_custom_data());
|
||||
if (member->account_id == forward_msg->context().user_info().base_data().account_id()) {
|
||||
member->online = 1;
|
||||
member->last_update_time = App::Instance()->nowtime;
|
||||
}
|
||||
}
|
||||
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
||||
forward_msg->context(),
|
||||
@ -728,6 +733,42 @@ std::set<std::string>* Guild::GetJobMembers(int job)
|
||||
return &job_hash_[job];
|
||||
}
|
||||
|
||||
void Guild::UpdateMemberInfo(const cs::MFUserInfo& user_info)
|
||||
{
|
||||
GuildMember* member = GetMember(user_info.base_data().account_id());
|
||||
if (member) {
|
||||
member->nickname = user_info.base_data().nickname();
|
||||
member->avatar_url = user_info.base_data().avatar_url();
|
||||
member->sex = user_info.base_data().sex();
|
||||
member->last_login_time = user_info.base_data().last_login_time();
|
||||
member->user_value1 = user_info.base_data().user_value1();
|
||||
member->user_value2 = user_info.base_data().user_value2();
|
||||
member->user_value3 = user_info.base_data().user_value3();
|
||||
member->data_version1 = user_info.base_data().base_data_version();
|
||||
member->online = user_info.base_data()._online();
|
||||
TypeConvert::Convert(user_info.temp_custom_data(), member->temp_custom_data);
|
||||
member->last_update_time = App::Instance()->nowtime;
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::UpdateMemberOnline(const std::string& account_id)
|
||||
{
|
||||
GuildMember* member = GetMember(account_id);
|
||||
if (member) {
|
||||
member->online = 1;
|
||||
member->last_update_time = App::Instance()->nowtime;
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::UpdateMemberOffline(const std::string& account_id)
|
||||
{
|
||||
GuildMember* member = GetMember(account_id);
|
||||
if (member) {
|
||||
member->online = 0;
|
||||
member->last_update_time = App::Instance()->nowtime;
|
||||
}
|
||||
}
|
||||
|
||||
int Guild::GetJobMemberNum(int job)
|
||||
{
|
||||
std::set<std::string>* members = GetJobMembers(job);
|
||||
|
@ -33,6 +33,9 @@ public:
|
||||
int GetMemberJob(const std::string& account_id);
|
||||
std::set<std::string>* GetJobMembers(int job);
|
||||
int GetJobMemberNum(int job);
|
||||
void UpdateMemberInfo(const cs::MFUserInfo& user_info);
|
||||
void UpdateMemberOnline(const std::string& account_id);
|
||||
void UpdateMemberOffline(const std::string& account_id);
|
||||
|
||||
private:
|
||||
bool IsFull();
|
||||
|
@ -105,12 +105,24 @@ void GuildMgr::_SS_IM_ForwardGuildSMMsg(f8::MsgHdr& hdr, const ss::SS_IM_Forward
|
||||
|
||||
void GuildMgr::_SS_IM_RefeshGuildMemberInfo(f8::MsgHdr& hdr, const ss::SS_IM_RefeshGuildMemberInfo& msg)
|
||||
{
|
||||
|
||||
Guild* guild = GetGuild(msg.context().user_info().base_data().guild_id());
|
||||
if (guild) {
|
||||
guild->UpdateMemberInfo(msg.context().user_info());
|
||||
} else {
|
||||
if (msg.context().user_info().base_data().guild_id() != 0) {
|
||||
LoadGuild(msg.context().user_info().base_data().guild_id());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GuildMgr::_SS_IM_PushGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushGuildUserOnlineState& msg)
|
||||
{
|
||||
|
||||
Guild* guild = GetGuild(msg.guild_id());
|
||||
if (guild) {
|
||||
for (auto& account_id : msg.online_users()) {
|
||||
guild->UpdateMemberOnline(account_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task)
|
||||
|
@ -60,6 +60,19 @@ void Player::Init()
|
||||
DBHelper::Instance()->ShuaOfflineUsers(this);
|
||||
}
|
||||
#endif
|
||||
SyncGuildMemberInfo();
|
||||
a8::Timer::Instance()->AddRepeatTimerAndAttach
|
||||
(
|
||||
1000 * 2 + (rand() % 3000),
|
||||
a8::XParams()
|
||||
.SetSender(this),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Player* hum = (Player*)param.sender.GetUserData();
|
||||
hum->SyncGuildMemberInfo();
|
||||
},
|
||||
&timer_attacher.timer_list_
|
||||
);
|
||||
}
|
||||
|
||||
void Player::UnInit()
|
||||
@ -137,6 +150,7 @@ void Player::_CMUpdateUserInfo(f8::MsgHdr& hdr, const cs::CMUpdateUserInfo& msg)
|
||||
myself.base_data.user_value3 = msg.user_value3();
|
||||
}
|
||||
OnDataVersion1Change();
|
||||
SyncGuildMemberInfo();
|
||||
}
|
||||
|
||||
void Player::_CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCustomData& msg)
|
||||
@ -151,6 +165,7 @@ void Player::_CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCust
|
||||
myself.temp_custom_data.value2 = msg.temp_custom_data().value3();
|
||||
}
|
||||
OnTempCustomDataChange();
|
||||
SyncGuildMemberInfo();
|
||||
}
|
||||
|
||||
void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg)
|
||||
@ -1331,7 +1346,6 @@ void Player::NotifyOnline()
|
||||
}
|
||||
SendSSMsg(myself, msg);
|
||||
}
|
||||
SyncGuildMemberInfo();
|
||||
}
|
||||
|
||||
void Player::NotifyOffline()
|
||||
|
@ -126,6 +126,7 @@ void TypeConvert::Convert(long long guild_id, int guild_job,
|
||||
base_data_pb.set_user_value1(member.user_value1);
|
||||
base_data_pb.set_user_value2(member.user_value2);
|
||||
base_data_pb.set_user_value3(member.user_value3);
|
||||
base_data_pb.set__online(member.online);
|
||||
base_data_pb.set_base_data_version(member.data_version1);
|
||||
}
|
||||
|
||||
|
@ -100,4 +100,6 @@ struct GuildMember
|
||||
int data_version1 = 0;
|
||||
|
||||
int online = 0;
|
||||
int last_update_time = 0;
|
||||
UserTempCustomData temp_custom_data;
|
||||
};
|
||||
|
@ -361,12 +361,14 @@ message SS_IM_RefeshGuildMemberInfo
|
||||
|
||||
message SS_GS_QueryGuildUserOnlineState
|
||||
{
|
||||
optional MFIMMsgConext context = 1;
|
||||
optional int64 seqid = 1;
|
||||
optional int64 guild_id = 2;
|
||||
repeated string account_ids = 3;
|
||||
}
|
||||
|
||||
message SS_IM_PushGuildUserOnlineState
|
||||
{
|
||||
optional MFIMMsgConext context = 1;
|
||||
repeated string online_users = 2;
|
||||
optional int64 seqid = 1;
|
||||
optional int64 guild_id = 2;
|
||||
repeated string online_users = 3;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user