This commit is contained in:
aozhiwei 2020-10-09 15:31:55 +08:00
parent 91bfb69548
commit effbe6c224
4 changed files with 60 additions and 7 deletions

View File

@ -11,8 +11,10 @@
#include "app.h" #include "app.h"
#include "jsondatamgr.h" #include "jsondatamgr.h"
#include "IMListener.h" #include "IMListener.h"
#include "metamgr.h"
const size_t MAX_RANK_HUMAN_NUM = 50; const size_t MAX_RANK_HUMAN_NUM = 50;
const char* const NAME_MAGIC_SYMBOL = "@";
void GuildMgr::Init() void GuildMgr::Init()
{ {
@ -37,9 +39,6 @@ void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request)
request->resp_xobj->SetVal("errmsg", ""); request->resp_xobj->SetVal("errmsg", "");
return; return;
} }
request->pending = true;
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
long long guild_id = request->request.At("guild_id")->AsXValue(); long long guild_id = request->request.At("guild_id")->AsXValue();
if (GetGuildById(guild_id)) { if (GetGuildById(guild_id)) {
@ -51,6 +50,38 @@ void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request)
std::string guild_data; std::string guild_data;
cs::MFGuildBasic* guild = new cs::MFGuildBasic; cs::MFGuildBasic* guild = new cs::MFGuildBasic;
TypeConvert::Convert(request, guild); TypeConvert::Convert(request, guild);
if (guild->guild_name().empty()) {
request->resp_xobj->SetVal("errcode", 2);
request->resp_xobj->SetVal("errmsg", "公会名字不能为空");
delete guild;
return;
}
if (GetGuildByName(
guild->_gameid(),
guild->_channel(),
guild->guild_name()
)) {
request->resp_xobj->SetVal("errcode", 3);
request->resp_xobj->SetVal("errmsg", "公会名已经存在");
delete guild;
return;
}
if (MetaMgr::Instance()->HasDirtyWord(guild->guild_name())) {
request->resp_xobj->SetVal("errcode", 4);
request->resp_xobj->SetVal("errmsg", "公会名含有违禁字符");
delete guild;
return;
}
if (MetaMgr::Instance()->HasDirtyWord(guild->guild_declaration())) {
request->resp_xobj->SetVal("errcode", 5);
request->resp_xobj->SetVal("errmsg", "公会宣言含有违禁字符");
delete guild;
return;
}
request->pending = true;
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
a8::XObject conn = DBEngine::Instance()->GetConnInfo(guild_id); a8::XObject conn = DBEngine::Instance()->GetConnInfo(guild_id);
DBEngine::Instance()->ExecAsyncScript DBEngine::Instance()->ExecAsyncScript
( (
@ -111,6 +142,14 @@ void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request)
f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData(); f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData();
cs::MFGuildBasic* guild = (cs::MFGuildBasic*)param.param1.GetUserData(); cs::MFGuildBasic* guild = (cs::MFGuildBasic*)param.param1.GetUserData();
{
std::string response;
request->resp_xobj->SetVal("errcode", 2);
request->resp_xobj->SetVal("errmsg", "服务器内部错误");
request->resp_xobj->ToJsonStr(response);
IMListener::Instance()->SendText(request->socket_handle, a8::HttpResponse(response));
}
delete guild; delete guild;
delete request; delete request;
}, },
@ -306,9 +345,9 @@ cs::MFGuildBasic* GuildMgr::GetGuildById(long long guild_id)
return itr != id_hash_.end() ? itr->second : nullptr; return itr != id_hash_.end() ? itr->second : nullptr;
} }
cs::MFGuildBasic* GuildMgr::GetGuildByName(int gameid, const std::string& guild_name) cs::MFGuildBasic* GuildMgr::GetGuildByName(int gameid, int channel, const std::string& guild_name)
{ {
auto itr = name_hash_.find(guild_name); auto itr = name_hash_.find(GenGuildName(gameid, channel, guild_name));
return itr != name_hash_.end() ? itr->second : nullptr; return itr != name_hash_.end() ? itr->second : nullptr;
} }
@ -321,7 +360,7 @@ std::vector<cs::MFGuildBasic*>* GuildMgr::GetGuildRank(int gameid)
void GuildMgr::AddGuild(cs::MFGuildBasic* guild) void GuildMgr::AddGuild(cs::MFGuildBasic* guild)
{ {
id_hash_[guild->guild_id()] = guild; id_hash_[guild->guild_id()] = guild;
name_hash_[guild->guild_name()] = guild; name_hash_[GenGuildName(guild->_gameid(), guild->_channel(), guild->guild_name())] = guild;
} }
void GuildMgr::LoadGuild(int instance_id, long long last_idx) void GuildMgr::LoadGuild(int instance_id, long long last_idx)
@ -598,3 +637,9 @@ void GuildMgr::InstallSyncGuildTimer()
&timer_attacher_.timer_list_); &timer_attacher_.timer_list_);
} }
} }
std::string GuildMgr::GenGuildName(int gameid, int channel, const std::string& raw_name)
{
std::string guild_name = a8::XValue(gameid).GetString() + NAME_MAGIC_SYMBOL + raw_name;
return guild_name;
}

View File

@ -27,7 +27,7 @@ class GuildMgr : public a8::Singleton<GuildMgr>
private: private:
cs::MFGuildBasic* GetGuildById(long long guild_id); cs::MFGuildBasic* GetGuildById(long long guild_id);
cs::MFGuildBasic* GetGuildByName(int gameid, const std::string& guild_name); cs::MFGuildBasic* GetGuildByName(int gameid, int channel, const std::string& guild_name);
std::vector<cs::MFGuildBasic*>* GetGuildRank(int gameid); std::vector<cs::MFGuildBasic*>* GetGuildRank(int gameid);
void AddGuild(cs::MFGuildBasic* guild); void AddGuild(cs::MFGuildBasic* guild);
void LoadGuild(int instance_id, long long last_idx); void LoadGuild(int instance_id, long long last_idx);
@ -40,6 +40,7 @@ class GuildMgr : public a8::Singleton<GuildMgr>
void UpdateGuild(cs::MFGuildBasic* new_guild); void UpdateGuild(cs::MFGuildBasic* new_guild);
bool CmpGuild(cs::MFGuildBasic* a, cs::MFGuildBasic* b); bool CmpGuild(cs::MFGuildBasic* a, cs::MFGuildBasic* b);
void InstallSyncGuildTimer(); void InstallSyncGuildTimer();
std::string GenGuildName(int gameid, int channel, const std::string& raw_name);
private: private:
a8::TimerAttacher timer_attacher_; a8::TimerAttacher timer_attacher_;

View File

@ -79,3 +79,8 @@ void MetaMgr::Reload()
loader_ = new MetaDataLoader(); loader_ = new MetaDataLoader();
loader_->Load(); loader_->Load();
} }
bool MetaMgr::HasDirtyWord(const std::string& word)
{
return false;
}

View File

@ -16,6 +16,8 @@ class MetaMgr : public a8::Singleton<MetaMgr>
void UnInit(); void UnInit();
void Reload(); void Reload();
bool HasDirtyWord(const std::string& word);
private: private:
MetaDataLoader* loader_ = nullptr; MetaDataLoader* loader_ = nullptr;