diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 5961c9d..a3850a4 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -8,6 +8,7 @@ #include "dbengine.h" #include "app.h" #include "guildmgr.h" +#include "typeconvert.h" void Guild::Init() { @@ -96,7 +97,9 @@ void Guild::Deserialize(const std::string& guild_data, const std::string& guild_ ss::MFGuildDB guilddb; guilddb.ParseFromString(guild_data); for (auto& member_pb : guilddb.members()) { - + GuildMember* member = new GuildMember; + TypeConvert::Convert(member_pb.base_data(), *member); + member_hash_[member->account_id] = member; } } diff --git a/server/imserver/guild.h b/server/imserver/guild.h index fdfd838..3cd7494 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -22,24 +22,6 @@ namespace ss class MFGuildLogDB; } -struct GuildMember -{ - std::string account_id; - std::string nickname; - std::string avatar_url; - int sex = 0; - int last_login_time = 0; - long long guild_id = 0; - int guild_job = 0; - - long long user_value1 = 0; - long long user_value2 = 0; - long long user_value3 = 0; - int data_version1 = 0; - - int online = 0; -}; - namespace ss { class MFGuildDB; diff --git a/server/imserver/typeconvert.cc b/server/imserver/typeconvert.cc index cc2e424..a7af6e6 100644 --- a/server/imserver/typeconvert.cc +++ b/server/imserver/typeconvert.cc @@ -54,6 +54,34 @@ void TypeConvert::Convert(const ss::MFBaseUserDataDB& base_data_pb, BaseUserData base_data.base_data_version = base_data_pb.base_data_version(); } +void TypeConvert::Convert(const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb) +{ + base_data_pb.set_account_id(member.account_id); + base_data_pb.set_nickname(member.nickname); + base_data_pb.set_avatar_url(member.avatar_url); + base_data_pb.set_sex(member.sex); + base_data_pb.set_last_login_time(member.last_login_time); + base_data_pb.set_guild_job(member.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(const ss::MFBaseUserDataDB& base_data_pb, GuildMember& member) +{ + member.account_id = base_data_pb.account_id(); + member.nickname = base_data_pb.nickname(); + 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(); + member.data_version1 = base_data_pb.base_data_version(); +} + void TypeConvert::Convert(const cs::MFBaseUserData& base_data_pb, BaseUserData& base_data) { base_data.account_id = base_data_pb.account_id(); diff --git a/server/imserver/typeconvert.h b/server/imserver/typeconvert.h index 0b588e4..d9e3e57 100644 --- a/server/imserver/typeconvert.h +++ b/server/imserver/typeconvert.h @@ -21,6 +21,9 @@ 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(const GuildMember& member, ss::MFBaseUserDataDB& base_data_pb); + static void Convert(const ss::MFBaseUserDataDB& base_data_pb, GuildMember& member); + static void Convert(const cs::MFBaseUserData& base_data_pb, BaseUserData& base_data); static void Convert(const BaseUserData& base_data, cs::MFBaseUserData& base_data_pb); static void Convert(const cs::MFUserTempCustomData& temp_custom_data_pb, diff --git a/server/imserver/types.h b/server/imserver/types.h index 787c5a9..206a865 100644 --- a/server/imserver/types.h +++ b/server/imserver/types.h @@ -75,3 +75,20 @@ struct RoleData int save_count = 0; int last_save_time = 0; }; + +struct GuildMember +{ + std::string account_id; + std::string nickname; + std::string avatar_url; + int sex = 0; + int last_login_time = 0; + int guild_job = 0; + + long long user_value1 = 0; + long long user_value2 = 0; + long long user_value3 = 0; + int data_version1 = 0; + + int online = 0; +}; diff --git a/server/tools/protobuild/ss_proto.proto b/server/tools/protobuild/ss_proto.proto index 8d4a959..9bd2111 100755 --- a/server/tools/protobuild/ss_proto.proto +++ b/server/tools/protobuild/ss_proto.proto @@ -44,6 +44,8 @@ message MFBaseUserDataDB optional int32 sex = 4; //性别 1:男 2:女 0:未知 optional int32 last_login_time = 5; //最后登录时间 optional int64 guild_id = 6; //公会id + optional string guild_name = 7; //公会名称 + optional int32 guild_job = 8; //公会职位 optional int64 user_value1 = 50; //用户字段1 optional int64 user_value2 = 51; //用户字段2 diff --git a/sql/relationdb_n.sql b/sql/relationdb_n.sql index b7bb3b2..6372b1b 100644 --- a/sql/relationdb_n.sql +++ b/sql/relationdb_n.sql @@ -48,6 +48,8 @@ CREATE TABLE `user` ( `user_value2` bigint NOT NULL DEFAULT '0' COMMENT 'user_value2', `user_value3` bigint NOT NULL DEFAULT '0' COMMENT 'user_value3', `guild_id` bigint NOT NULL COMMENT '工会id', + `guild_name` tinyblob COMMENT '公会名字', + `guild_job` int(11) NOT NULL DEFAULT '0' COMMENT '公会职位', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', `registertime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',