233 lines
6.3 KiB
C++
233 lines
6.3 KiB
C++
#include "precompile.h"
|
|
|
|
#include "guild.h"
|
|
#include "guildmgr.h"
|
|
#include "cs_msgid.pb.h"
|
|
#include "cs_proto.pb.h"
|
|
#include "ss_proto.pb.h"
|
|
#include "MSConnMgr.h"
|
|
|
|
void GuildMgr::Init()
|
|
{
|
|
|
|
}
|
|
|
|
void GuildMgr::UnInit()
|
|
{
|
|
|
|
}
|
|
|
|
void GuildMgr::_SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg)
|
|
{
|
|
switch (hdr.msgid) {
|
|
case cs::CMMessageId_e::_CMGuildCreate:
|
|
{
|
|
cs::CMGuildCreate cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildCreate(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildJoin:
|
|
{
|
|
cs::CMGuildJoin cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildJoin(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildAgree:
|
|
{
|
|
cs::CMGuildAgree cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildAgree(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildKick:
|
|
{
|
|
cs::CMGuildKick cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildKick(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildQuit:
|
|
{
|
|
cs::CMGuildQuit cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildQuit(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildDismiss:
|
|
{
|
|
cs::CMGuildDismiss cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildDismiss(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
case cs::CMMessageId_e::_CMGuildRename:
|
|
{
|
|
cs::CMGuildRename cmmsg;
|
|
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
|
|
_CMGuildRename(msg.context(), cmmsg);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void GuildMgr::_CMGuildCreate(const ss::MFIMMsgConext& context, const cs::CMGuildCreate& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (guild) {
|
|
cs::SMGuildCreate respmsg;
|
|
respmsg.set_errcode(1);
|
|
respmsg.set_errmsg("群id已经存在");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildJoin(const ss::MFIMMsgConext& context, const cs::CMGuildJoin& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(msg.guild_id());
|
|
if (!guild) {
|
|
cs::SMGuildJoin respmsg;
|
|
respmsg.set_errcode(1);
|
|
respmsg.set_errmsg("群id已经存在");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
GuildMember* member = guild->GetMember(context.account_id());
|
|
if (member) {
|
|
cs::SMGuildJoin respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
if (guild->IsFull()) {
|
|
cs::SMGuildJoin respmsg;
|
|
respmsg.set_errcode(2);
|
|
respmsg.set_errmsg("群已满");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
member = new GuildMember();
|
|
member->account_id = context.account_id();
|
|
member->nickname = context.nickname();
|
|
member->avatar_url = context.avatar_url();
|
|
member->sex = context.sex();
|
|
member->online = 1;
|
|
member->guild_id = guild->guild_id;
|
|
member->data_version1 = context.base_data_version();
|
|
guild->AddMember(member);
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildAgree(const ss::MFIMMsgConext& context, const cs::CMGuildAgree& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (!guild) {
|
|
return;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildKick(const ss::MFIMMsgConext& context, const cs::CMGuildKick& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (!guild) {
|
|
cs::SMGuildKick respmsg;
|
|
respmsg.set_errcode(1);
|
|
respmsg.set_errmsg("群id错误");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
if (!guild->GetMember(msg.account_id())) {
|
|
cs::SMGuildKick respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
guild->RemoveMember(msg.account_id());
|
|
cs::SMGuildKick respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildQuit(const ss::MFIMMsgConext& context, const cs::CMGuildQuit& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (!guild) {
|
|
cs::SMGuildQuit respmsg;
|
|
respmsg.set_errcode(1);
|
|
respmsg.set_errmsg("群id错误");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
if (!guild->GetMember(context.account_id())) {
|
|
cs::SMGuildQuit respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
guild->RemoveMember(context.account_id());
|
|
cs::SMGuildQuit respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildDismiss(const ss::MFIMMsgConext& context, const cs::CMGuildDismiss& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (!guild) {
|
|
return;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void GuildMgr::_CMGuildRename(const ss::MFIMMsgConext& context, const cs::CMGuildRename& msg)
|
|
{
|
|
#if 0
|
|
Guild* guild = GetGuild(context.guild_id());
|
|
if (!guild) {
|
|
cs::SMGuildRename respmsg;
|
|
respmsg.set_errcode(1);
|
|
respmsg.set_errmsg("群id错误");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
GuildMember* member = guild->GetMember(context.account_id());
|
|
if (!member) {
|
|
cs::SMGuildRename respmsg;
|
|
respmsg.set_errcode(2);
|
|
respmsg.set_errmsg("没有权限");
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
return;
|
|
}
|
|
guild->RemoveMember(msg.new_guild_name());
|
|
cs::SMGuildRename respmsg;
|
|
ForwardGuildSMMsg(context, respmsg);
|
|
#endif
|
|
}
|
|
|
|
Guild* GuildMgr::GetGuild(long long guild_id)
|
|
{
|
|
auto itr = id_hash_.find(guild_id);
|
|
return itr != id_hash_.end() ? itr->second : nullptr;
|
|
}
|
|
|
|
void GuildMgr::ForwardGuildSMMsg(const ss::MFIMMsgConext& context,
|
|
const ::google::protobuf::Message& smmsg)
|
|
{
|
|
ss::SS_IM_ForwardGuildSMMsg msg;
|
|
*msg.mutable_context() = context;
|
|
smmsg.SerializeToString(msg.mutable_payload());
|
|
MSConnMgr::Instance()->SendMsg(msg, 0);
|
|
}
|