This commit is contained in:
aozhiwei 2020-09-29 11:47:36 +08:00
parent 2e4b6f38db
commit 16ac5a5163
4 changed files with 57 additions and 19 deletions

View File

@ -26,6 +26,9 @@ enum GuildApplyStatus_e
void Guild::Init() void Guild::Init()
{ {
logdb_ = new ss::MFGuildLogDB; logdb_ = new ss::MFGuildLogDB;
for (size_t i = 0; i < kGuildJobMax; ++i) {
job_hash_.push_back(std::set<std::string>());
}
} }
void Guild::UnInit() void Guild::UnInit()
@ -38,12 +41,6 @@ void Guild::UnInit()
delete pair.second; delete pair.second;
} }
apply_hash_.clear(); apply_hash_.clear();
for (size_t i = 0; i < job_hash_.size(); ++i) {
if (job_hash_[i]) {
delete job_hash_[i];
job_hash_[i] = nullptr;
}
}
A8_SAFE_DELETE(logdb_); A8_SAFE_DELETE(logdb_);
} }
@ -160,10 +157,6 @@ void Guild::Deserialize(const std::string& guild_data,
} }
member_job_hash_[account_id] = job; member_job_hash_[account_id] = job;
std::set<std::string>* members = GetJobMembers(job); std::set<std::string>* members = GetJobMembers(job);
if (!members) {
members = new std::set<std::string>();
job_hash_[job] = members;
}
members->insert(account_id); members->insert(account_id);
} }
} }
@ -173,10 +166,6 @@ void Guild::Deserialize(const std::string& guild_data,
{ {
member_job_hash_[owner_id_] = kGuildOwner; member_job_hash_[owner_id_] = kGuildOwner;
std::set<std::string>* members = GetJobMembers(kGuildOwner); std::set<std::string>* members = GetJobMembers(kGuildOwner);
if (!members) {
members = new std::set<std::string>();
job_hash_[kGuildOwner] = members;
}
members->insert(owner_id_); members->insert(owner_id_);
} }
} }
@ -401,7 +390,7 @@ void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg
TypeConvert::Convert(guild_id_, TypeConvert::Convert(guild_id_,
GetMemberJob(sorted_members_[i]->account_id), GetMemberJob(sorted_members_[i]->account_id),
*sorted_members_[i], *sorted_members_[i],
*p); *(p->mutable_base_data()));
} }
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
forward_msg->context(), forward_msg->context(),
@ -527,7 +516,49 @@ void Guild::_CMGuildLog(f8::MsgHdr& hdr, const cs::CMGuildLog& msg)
void Guild::_CMGuildMemberSetJob(f8::MsgHdr& hdr, const cs::CMGuildMemberSetJob& msg) void Guild::_CMGuildMemberSetJob(f8::MsgHdr& hdr, const cs::CMGuildMemberSetJob& msg)
{ {
ss::SS_IM_ForwardGuildCMMsg *forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data;
cs::SMGuildMemberSetJob respmsg;
if (!IsValidGuildJob(msg.job())) {
SendErrorMsg(hdr.socket_handle, forward_msg->context(), "参数错误");
respmsg.set_errcode(2);
respmsg.set_errmsg("参数错误");
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
forward_msg->context(),
respmsg);
return;
}
GuildMember* sender = GetMember(forward_msg->context().user_info().base_data().account_id());
if (!sender) {
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;
}
if (GetMemberJob(sender->account_id) != kGuildOwner) {
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;
}
switch (msg.job()) {
case kGuildOwner:
{
}
break;
}
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
forward_msg->context(),
respmsg);
} }
int Guild::GetMemberJob(const std::string& account_id) int Guild::GetMemberJob(const std::string& account_id)
@ -547,7 +578,7 @@ std::set<std::string>* Guild::GetJobMembers(int job)
if (!IsValidGuildJob(job)) { if (!IsValidGuildJob(job)) {
return nullptr; return nullptr;
} }
return job_hash_[job]; return &job_hash_[job];
} }
int Guild::GetJobMemberNum(int job) int Guild::GetJobMemberNum(int job)

View File

@ -65,7 +65,7 @@ private:
ss::MFGuildLogDB* logdb_ = nullptr; ss::MFGuildLogDB* logdb_ = nullptr;
std::map<long long, GuildApply*> apply_hash_; std::map<long long, GuildApply*> apply_hash_;
std::map<std::string, int> member_job_hash_; std::map<std::string, int> member_job_hash_;
std::array<std::set<std::string>*, kGuildJobMax> job_hash_ = {}; std::vector<std::set<std::string>> job_hash_;
int gameid_ = 0; int gameid_ = 0;
long long guild_id_ = 0; long long guild_id_ = 0;

View File

@ -927,7 +927,14 @@ void Player::_CMGuildLog(f8::MsgHdr& hdr, const cs::CMGuildLog& msg)
void Player::_CMGuildMemberSetJob(f8::MsgHdr& hdr, const cs::CMGuildMemberSetJob& msg) void Player::_CMGuildMemberSetJob(f8::MsgHdr& hdr, const cs::CMGuildMemberSetJob& msg)
{ {
cs::SMGuildMemberSetJob respmsg;
if (GuildId() == 0) {
respmsg.set_errcode(1);
respmsg.set_errmsg("你还没有公会");
SendMsg(respmsg);
return;
}
ForwardGuildCMMsg(hdr, GuildId());
} }
void Player::_SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAgreeRequest& msg) void Player::_SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAgreeRequest& msg)

View File

@ -486,7 +486,7 @@ message SMGuildMemberList
optional int32 errcode = 1; // optional int32 errcode = 1; //
optional string errmsg = 2; // optional string errmsg = 2; //
optional MFPaging paging = 3; // optional MFPaging paging = 3; //
repeated MFBaseUserData member_list = 4; // repeated MFUserInfo member_list = 4; //
} }
// //