This commit is contained in:
aozhiwei 2020-09-28 14:04:20 +08:00
parent 279bf87756
commit f31a32e56b
6 changed files with 32 additions and 17 deletions

View File

@ -194,7 +194,10 @@ void Guild::_CMGuildAgree(f8::MsgHdr& hdr, const cs::CMGuildAgree& msg)
respmsg);
return;
}
if (!(sender->guild_job == kGuildOwner || sender->guild_job == kGuildAdmin)) {
if (!(
GetMemberJob(sender->account_id) == kGuildOwner ||
GetMemberJob(sender->account_id) == kGuildAdmin)
) {
SendErrorMsg(hdr.socket_handle, forward_msg->context(), "权限不够");
respmsg.set_errcode(3);
respmsg.set_errmsg("权限不够");
@ -236,7 +239,10 @@ void Guild::_CMGuildKick(f8::MsgHdr& hdr, const cs::CMGuildKick& msg)
respmsg);
return;
}
if (!(sender->guild_job == kGuildOwner || sender->guild_job == kGuildAdmin)) {
if (!(
GetMemberJob(sender->account_id) == kGuildOwner ||
GetMemberJob(sender->account_id) == kGuildAdmin)
) {
SendErrorMsg(hdr.socket_handle, forward_msg->context(), "权限不够");
respmsg.set_errcode(3);
respmsg.set_errmsg("权限不够");
@ -271,7 +277,7 @@ void Guild::_CMGuildQuit(f8::MsgHdr& hdr, const cs::CMGuildQuit& msg)
respmsg);
GuildMember* sender = GetMember(forward_msg->context().user_info().base_data().account_id());
if (sender) {
if (sender->guild_job != kGuildOwner) {
if (GetMemberJob(sender->account_id) != kGuildOwner) {
RemoveMember(sender->account_id,
sender->account_id,
kGuildQuit);
@ -286,7 +292,7 @@ void Guild::_CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg)
cs::SMGuildDismiss respmsg;
GuildMember* sender = GetMember(forward_msg->context().user_info().base_data().account_id());
if (sender) {
if (sender->guild_job != kGuildOwner) {
if (GetMemberJob(sender->account_id) != kGuildOwner) {
SendErrorMsg(hdr.socket_handle, forward_msg->context(), "权限不够");
respmsg.set_errcode(3);
respmsg.set_errmsg("权限不够");
@ -337,7 +343,10 @@ void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg
break;
}
auto p = respmsg.add_member_list();
TypeConvert::Convert(guild_id_, *sorted_members_[i], *p);
TypeConvert::Convert(guild_id_,
GetMemberJob(sorted_members_[i]->account_id),
*sorted_members_[i],
*p);
}
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
forward_msg->context(),
@ -489,7 +498,10 @@ void Guild::FillGuildDB(ss::MFGuildDB& guild_pb)
{
for (auto& pair : member_hash_) {
auto p = guild_pb.add_members();
TypeConvert::Convert(guild_id_, *pair.second, *p->mutable_base_data());
TypeConvert::Convert(guild_id_,
GetMemberJob(pair.second->account_id),
*pair.second,
*p->mutable_base_data());
}
}
@ -500,7 +512,7 @@ void Guild::SerializeMembers(std::string& guild_members)
a8::MutableXObject* member_xobj = a8::MutableXObject::NewObject();
member_xobj->SetVal("account_id", pair.second->account_id);
member_xobj->SetVal("nickname", pair.second->nickname);
member_xobj->SetVal("guild_job", pair.second->guild_job);
member_xobj->SetVal("guild_job", GetMemberJob(pair.second->account_id));
members_xobj->Push(*member_xobj);
delete member_xobj;
}

View File

@ -30,6 +30,7 @@ public:
void _CMGuildMemberFire(f8::MsgHdr& hdr, const cs::CMGuildMemberFire& msg);
long long GuildId() { return guild_id_; }
int GetMemberJob(const std::string& account_id) { return 0;};
private:
bool IsFull();

View File

@ -95,7 +95,8 @@ void TypeConvert::Convert(const ss::MFBaseUserDataDB& base_data_pb, BaseUserData
base_data.base_data_version = base_data_pb.base_data_version();
}
void TypeConvert::Convert(long long guild_id, const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb)
void TypeConvert::Convert(long long guild_id, int guild_job,
const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb)
{
base_data_pb.set_account_id(member.account_id);
base_data_pb.set_nickname(member.nickname);
@ -103,14 +104,15 @@ void TypeConvert::Convert(long long guild_id, const GuildMember& member, ss::MFB
base_data_pb.set_sex(member.sex);
base_data_pb.set_last_login_time(member.last_login_time);
base_data_pb.set_guild_id(guild_id);
base_data_pb.set_guild_job(member.guild_job);
base_data_pb.set_guild_job(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_base_data_version(member.data_version1);
}
void TypeConvert::Convert(long long guild_id, const GuildMember& member, cs::MFBaseUserData& base_data_pb)
void TypeConvert::Convert(long long guild_id, int guild_job,
const GuildMember& member, cs::MFBaseUserData& base_data_pb)
{
base_data_pb.set_account_id(member.account_id);
base_data_pb.set_nickname(member.nickname);
@ -118,7 +120,7 @@ void TypeConvert::Convert(long long guild_id, const GuildMember& member, cs::MFB
base_data_pb.set_sex(member.sex);
base_data_pb.set_last_login_time(member.last_login_time);
base_data_pb.set_guild_id(guild_id);
base_data_pb.set_guild_job(member.guild_job);
base_data_pb.set_guild_job(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);
@ -132,7 +134,6 @@ void TypeConvert::Convert(const ss::MFBaseUserDataDB& base_data_pb, GuildMember&
member.avatar_url = base_data_pb.avatar_url();
member.sex = base_data_pb.sex();
member.last_login_time = base_data_pb.last_login_time();
member.guild_job = base_data_pb.guild_job();
member.user_value1 = base_data_pb.user_value1();
member.user_value2 = base_data_pb.user_value2();
member.user_value3 = base_data_pb.user_value3();
@ -146,7 +147,6 @@ void TypeConvert::Convert(const cs::MFBaseUserData& base_data_pb, GuildMember& m
member.avatar_url = base_data_pb.avatar_url();
member.sex = base_data_pb.sex();
member.last_login_time = base_data_pb.last_login_time();
member.guild_job = base_data_pb.guild_job();
member.user_value1 = base_data_pb.user_value1();
member.user_value2 = base_data_pb.user_value2();
member.user_value3 = base_data_pb.user_value3();

View File

@ -30,9 +30,11 @@ class TypeConvert
static void Convert(const BaseUserData& base_data, ss::MFBaseUserDataDB& base_data_pb);
static void Convert(const ss::MFBaseUserDataDB& base_data_pb, BaseUserData& base_data);
static void Convert(long long guild_id, const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb);
static void Convert(long long guild_id, int guild_job,
const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb);
static void Convert(const ss::MFBaseUserDataDB& base_data_pb, GuildMember& member);
static void Convert(long long guild_id, const GuildMember& member, cs::MFBaseUserData& base_data_pb);
static void Convert(long long guild_id, int guild_job,
const GuildMember& member, cs::MFBaseUserData& base_data_pb);
static void Convert(const cs::MFBaseUserData& base_data_pb, GuildMember& member);
static void Convert(const cs::MFBaseUserData& base_data_pb, BaseUserData& base_data);

View File

@ -88,7 +88,6 @@ struct RoleData
struct GuildMember
{
int guild_job = 0;
std::string account_id;
std::string nickname;
std::string avatar_url;

View File

@ -116,7 +116,8 @@ CREATE TABLE `guild` (
PRIMARY KEY (`idx`),
UNIQUE KEY `guild_id` (`guild_id`),
KEY `owner_id` (`owner_id`),
KEY `creator_id` (`creator_id`)
KEY `creator_id` (`creator_id`),
KEY `modifytime` (`modifytime`)
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;