1
This commit is contained in:
parent
6cba6df0f7
commit
1ffc2f4c0e
@ -69,6 +69,7 @@ enum GuildMemberUpdateReason
|
|||||||
{
|
{
|
||||||
kGuildUpdateReasonJoin = 0,
|
kGuildUpdateReasonJoin = 0,
|
||||||
kGuildUpdateReasonAgree = 1,
|
kGuildUpdateReasonAgree = 1,
|
||||||
|
kGuildUpdateReasonSetJob = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* const PROJ_NAME_FMT = "friend_imserver";
|
const char* const PROJ_NAME_FMT = "friend_imserver";
|
||||||
|
@ -379,17 +379,35 @@ void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg
|
|||||||
if (respmsg.paging().page_size() <= 0) {
|
if (respmsg.paging().page_size() <= 0) {
|
||||||
respmsg.mutable_paging()->set_page_size(10);
|
respmsg.mutable_paging()->set_page_size(10);
|
||||||
}
|
}
|
||||||
AdjustPaging(respmsg.mutable_paging(), sorted_members_.size());
|
int total_count = 0;
|
||||||
|
{
|
||||||
for (size_t i = respmsg.paging().curr_page() * respmsg.paging().page_size();
|
for (size_t i = respmsg.paging().curr_page() * respmsg.paging().page_size();
|
||||||
i < sorted_members_.size();
|
i < sorted_members_.size();
|
||||||
++i) {
|
++i) {
|
||||||
|
GuildMember* member = sorted_members_[i];
|
||||||
|
if (!msg.member_name().empty() &&
|
||||||
|
member->nickname.find(msg.member_name()) == std::string::npos) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
++total_count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AdjustPaging(respmsg.mutable_paging(), total_count);
|
||||||
|
for (size_t i = respmsg.paging().curr_page() * respmsg.paging().page_size();
|
||||||
|
i < sorted_members_.size();
|
||||||
|
++i) {
|
||||||
|
GuildMember* member = sorted_members_[i];
|
||||||
|
if (!msg.member_name().empty() &&
|
||||||
|
member->nickname.find(msg.member_name()) == std::string::npos) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (respmsg.member_list().size() >= respmsg.paging().page_size()) {
|
if (respmsg.member_list().size() >= respmsg.paging().page_size()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
auto p = respmsg.add_member_list();
|
auto p = respmsg.add_member_list();
|
||||||
TypeConvert::Convert(guild_id_,
|
TypeConvert::Convert(guild_id_,
|
||||||
GetMemberJob(sorted_members_[i]->account_id),
|
GetMemberJob(member->account_id),
|
||||||
*sorted_members_[i],
|
*member,
|
||||||
*(p->mutable_base_data()));
|
*(p->mutable_base_data()));
|
||||||
}
|
}
|
||||||
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
||||||
@ -548,32 +566,93 @@ void Guild::_CMGuildMemberSetJob(f8::MsgHdr& hdr, const cs::CMGuildMemberSetJob&
|
|||||||
respmsg);
|
respmsg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
GuildMember* member = GetMember(msg.member_id());
|
||||||
|
if (!member) {
|
||||||
|
SendErrorMsg(hdr.socket_handle, forward_msg->context(), "参数错误");
|
||||||
|
respmsg.set_errcode(3);
|
||||||
|
respmsg.set_errmsg("参数错误");
|
||||||
|
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
||||||
|
forward_msg->context(),
|
||||||
|
respmsg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int src_job = GetMemberJob(member->account_id);
|
||||||
|
if (src_job != msg.job()) {
|
||||||
|
{
|
||||||
|
std::set<std::string>* noraml_members = GetJobMembers(src_job);
|
||||||
|
noraml_members->erase(member->account_id);
|
||||||
|
}
|
||||||
switch (msg.job()) {
|
switch (msg.job()) {
|
||||||
case kGuildOwner:
|
case kGuildOwner:
|
||||||
{
|
{
|
||||||
|
owner_id_ = member->account_id;
|
||||||
|
owner_name_ = member->nickname;
|
||||||
|
owner_avatar_url_ = member->avatar_url;
|
||||||
|
member_job_hash_[sender->account_id] = kGuildMember;
|
||||||
|
member_job_hash_[member->account_id] = kGuildOwner;
|
||||||
|
{
|
||||||
|
std::set<std::string>* members = GetJobMembers(kGuildOwner);
|
||||||
|
members->clear();
|
||||||
|
members->insert(member->account_id);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::set<std::string>* members = GetJobMembers(kGuildMember);
|
||||||
|
members->insert(sender->account_id);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SyncHelper::Instance()->SyncGuildMemberUpdate(this, sender, kGuildUpdateReasonSetJob);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
auto p = respmsg.add_chged_members();
|
||||||
|
p->add_values(sender->account_id);
|
||||||
|
p->add_values(a8::XValue(GetMemberJob(sender->account_id)).GetString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kGuildAdmin:
|
case kGuildAdmin:
|
||||||
{
|
{
|
||||||
|
member_job_hash_[member->account_id] = kGuildAdmin;
|
||||||
|
{
|
||||||
|
std::set<std::string>* members = GetJobMembers(kGuildAdmin);
|
||||||
|
for (const std::string& old_member_id : *members) {
|
||||||
|
GuildMember* old_member = GetMember(old_member_id);
|
||||||
|
if (old_member) {
|
||||||
|
member_job_hash_[old_member_id] = kGuildMember;
|
||||||
|
std::set<std::string>* noraml_members = GetJobMembers(kGuildMember);
|
||||||
|
noraml_members->insert(old_member_id);
|
||||||
|
SyncHelper::Instance()->SyncGuildMemberUpdate(this,
|
||||||
|
old_member,
|
||||||
|
kGuildUpdateReasonSetJob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
members->clear();
|
||||||
|
members->insert(member->account_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kGuildElite:
|
case kGuildElite:
|
||||||
{
|
{
|
||||||
|
member_job_hash_[member->account_id] = kGuildElite;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
member_job_hash_[member->account_id] = kGuildMember;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
auto p = respmsg.add_chged_members();
|
||||||
|
p->add_values(member->account_id);
|
||||||
|
p->add_values(a8::XValue(GetMemberJob(member->account_id)).GetString());
|
||||||
|
SyncHelper::Instance()->SyncGuildMemberUpdate(this, member, kGuildUpdateReasonSetJob);
|
||||||
|
}
|
||||||
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
||||||
forward_msg->context(),
|
forward_msg->context(),
|
||||||
respmsg);
|
respmsg);
|
||||||
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Guild::GetMemberJob(const std::string& account_id)
|
int Guild::GetMemberJob(const std::string& account_id)
|
||||||
|
@ -479,7 +479,7 @@ message SMGuildRank
|
|||||||
message CMGuildMemberList
|
message CMGuildMemberList
|
||||||
{
|
{
|
||||||
optional MFPaging paging = 1; //分页信息
|
optional MFPaging paging = 1; //分页信息
|
||||||
optional string member_id = 2; //成员id
|
optional string member_name = 2; //成员名字
|
||||||
}
|
}
|
||||||
message SMGuildMemberList
|
message SMGuildMemberList
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user