添加名字功能
This commit is contained in:
parent
f51b66f84a
commit
1a1fe81447
@ -1,3 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "metatable.pb.h"
|
#include "metatable.pb.h"
|
||||||
|
|
||||||
|
namespace MetaData
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -34,8 +34,12 @@ class MetaDataLoader
|
|||||||
public:
|
public:
|
||||||
std::map<size_t, std::map<std::string, std::string> > dirty_words;
|
std::map<size_t, std::map<std::string, std::string> > dirty_words;
|
||||||
std::list<metatable::Text> text_meta_list;
|
std::list<metatable::Text> text_meta_list;
|
||||||
|
std::list<metatable::Creator> creator_meta_list;
|
||||||
|
|
||||||
std::map<std::string, std::string> text_hash;
|
std::map<std::string, std::string> text_hash;
|
||||||
|
std::vector<std::string> name1_list;
|
||||||
|
std::vector<std::string> name2_list;
|
||||||
|
std::vector<std::string> name3_list;
|
||||||
|
|
||||||
void Load()
|
void Load()
|
||||||
{
|
{
|
||||||
@ -59,6 +63,7 @@ public:
|
|||||||
res_path = "../res/";
|
res_path = "../res/";
|
||||||
}
|
}
|
||||||
f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list);
|
f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list);
|
||||||
|
f8::ReadCsvMetaFile(res_path + "creator@creator.csv", creator_meta_list);
|
||||||
LoadDirtyWordTable();
|
LoadDirtyWordTable();
|
||||||
BindToMetaData();
|
BindToMetaData();
|
||||||
Check();
|
Check();
|
||||||
@ -96,6 +101,11 @@ private:
|
|||||||
for (auto& meta : text_meta_list) {
|
for (auto& meta : text_meta_list) {
|
||||||
text_hash[meta.textid()] = meta.text();
|
text_hash[meta.textid()] = meta.text();
|
||||||
}
|
}
|
||||||
|
for (auto& meta : creator_meta_list) {
|
||||||
|
name1_list.push_back(meta.adjective());
|
||||||
|
name2_list.push_back(meta.surname());
|
||||||
|
name3_list.push_back(meta.name());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -176,3 +186,18 @@ std::string MetaMgr::GetText(const std::string& textid, const std::string& def_t
|
|||||||
auto itr = loader_->text_hash.find(textid);
|
auto itr = loader_->text_hash.find(textid);
|
||||||
return itr != loader_->text_hash.end() ? itr->second : def_text;
|
return itr != loader_->text_hash.end() ? itr->second : def_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string MetaMgr::RandName()
|
||||||
|
{
|
||||||
|
std::string name;
|
||||||
|
if (!loader_->name1_list.empty()) {
|
||||||
|
name += loader_->name1_list[rand() % loader_->name1_list.size()];
|
||||||
|
}
|
||||||
|
if (!loader_->name2_list.empty()) {
|
||||||
|
name += loader_->name2_list[rand() % loader_->name2_list.size()];
|
||||||
|
}
|
||||||
|
if (!loader_->name3_list.empty()) {
|
||||||
|
name += loader_->name3_list[rand() % loader_->name3_list.size()];
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
bool HasDirtyWord(const std::string& text);
|
bool HasDirtyWord(const std::string& text);
|
||||||
std::string ReplaceDirtyWord(const std::string& text, char c);
|
std::string ReplaceDirtyWord(const std::string& text, char c);
|
||||||
std::string GetText(const std::string& textid, const std::string& def_text="");
|
std::string GetText(const std::string& textid, const std::string& def_text="");
|
||||||
|
std::string RandName();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MetaDataLoader* loader_ = nullptr;
|
MetaDataLoader* loader_ = nullptr;
|
||||||
|
@ -46,16 +46,57 @@ void TextMgr::__DirtyWordReplace(f8::JsonHttpRequest* request)
|
|||||||
|
|
||||||
void TextMgr::__RandName(f8::JsonHttpRequest* request)
|
void TextMgr::__RandName(f8::JsonHttpRequest* request)
|
||||||
{
|
{
|
||||||
|
request->resp_xobj->SetVal("errcode", 0);
|
||||||
|
request->resp_xobj->SetVal("errmsg", "");
|
||||||
|
std::string name = MetaMgr::Instance()->RandName();
|
||||||
|
int try_count = 0;
|
||||||
|
while (try_count < 10) {
|
||||||
|
name = MetaMgr::Instance()->RandName();
|
||||||
|
if (MetaMgr::Instance()->HasDirtyWord(name)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++try_count;
|
||||||
|
}
|
||||||
|
if (try_count >= 10) {
|
||||||
|
request->resp_xobj->SetVal("errcode", 1);
|
||||||
|
request->resp_xobj->SetVal("errmsg", "含有屏蔽字符,请重试");
|
||||||
|
} else {
|
||||||
|
std::string sign = Sign(name);
|
||||||
|
request->resp_xobj->SetVal("errcode", 0);
|
||||||
|
request->resp_xobj->SetVal("errmsg", "");
|
||||||
|
request->resp_xobj->SetVal("name", name);
|
||||||
|
request->resp_xobj->SetVal("name_sign", sign);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextMgr::__IsValidName(f8::JsonHttpRequest* request)
|
void TextMgr::__IsValidName(f8::JsonHttpRequest* request)
|
||||||
{
|
{
|
||||||
request->resp_xobj->SetVal("errcode", 0);
|
request->resp_xobj->SetVal("errcode", 0);
|
||||||
request->resp_xobj->SetVal("errmsg", "");
|
request->resp_xobj->SetVal("errmsg", "");
|
||||||
std::string name = request->request.At("name")->AsXValue();
|
std::string name = "";
|
||||||
if (MetaMgr::Instance()->HasDirtyWord(name)) {
|
if (MetaMgr::Instance()->HasDirtyWord(name)) {
|
||||||
request->resp_xobj->SetVal("errcode", 1);
|
request->resp_xobj->SetVal("errcode", 1);
|
||||||
request->resp_xobj->SetVal("errmsg", "含有屏蔽字符");
|
request->resp_xobj->SetVal("errmsg", "含有屏蔽字符");
|
||||||
|
} else {
|
||||||
|
std::string sign = Sign(name);
|
||||||
|
request->resp_xobj->SetVal("errcode", 0);
|
||||||
|
request->resp_xobj->SetVal("errmsg", "");
|
||||||
|
request->resp_xobj->SetVal("name", name);
|
||||||
|
request->resp_xobj->SetVal("name_sign", sign);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string TextMgr::Sign(const std::string& name)
|
||||||
|
{
|
||||||
|
int rnd = rand();
|
||||||
|
std::string sign = a8::openssl::md5(name +
|
||||||
|
a8::XValue(App::Instance()->nowtime).GetString() +
|
||||||
|
a8::XValue(rnd).GetString());
|
||||||
|
sign = a8::Format("%s_%s_%s",
|
||||||
|
{
|
||||||
|
a8::XValue(App::Instance()->nowtime).GetString(),
|
||||||
|
a8::XValue(rnd).GetString(),
|
||||||
|
sign
|
||||||
|
});
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
@ -19,6 +19,7 @@ class TextMgr : public a8::Singleton<TextMgr>
|
|||||||
void __IsValidName(f8::JsonHttpRequest* request);
|
void __IsValidName(f8::JsonHttpRequest* request);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::string Sign(const std::string& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
a8::TimerAttacher timer_attacher_;
|
a8::TimerAttacher timer_attacher_;
|
||||||
|
@ -11,3 +11,10 @@ message Text
|
|||||||
optional string textid = 1;
|
optional string textid = 1;
|
||||||
optional string text = 2;
|
optional string text = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message Creator
|
||||||
|
{
|
||||||
|
optional string adjective = 1;
|
||||||
|
optional string surname = 2;
|
||||||
|
optional string name = 3;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user