1
This commit is contained in:
parent
91bfb69548
commit
effbe6c224
@ -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;
|
||||||
|
}
|
||||||
|
@ -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_;
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user