diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 82da854..7bb603a 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -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; } diff --git a/server/imserver/guild.h b/server/imserver/guild.h index 1ecc956..96b3e0b 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -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(); diff --git a/server/imserver/typeconvert.cc b/server/imserver/typeconvert.cc index b0d29cc..2e3c9b4 100644 --- a/server/imserver/typeconvert.cc +++ b/server/imserver/typeconvert.cc @@ -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(); diff --git a/server/imserver/typeconvert.h b/server/imserver/typeconvert.h index ac15db2..4cf311d 100644 --- a/server/imserver/typeconvert.h +++ b/server/imserver/typeconvert.h @@ -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); diff --git a/server/imserver/types.h b/server/imserver/types.h index 8d3f30e..06bd8ff 100644 --- a/server/imserver/types.h +++ b/server/imserver/types.h @@ -88,7 +88,6 @@ struct RoleData struct GuildMember { - int guild_job = 0; std::string account_id; std::string nickname; std::string avatar_url; diff --git a/sql/relationdb_n.sql b/sql/relationdb_n.sql index 8bcaf1f..5a1534f 100644 --- a/sql/relationdb_n.sql +++ b/sql/relationdb_n.sql @@ -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 */;