This commit is contained in:
aozhiwei 2020-09-21 19:53:59 +08:00
parent dc3cd883c6
commit df68445d60
5 changed files with 76 additions and 8 deletions

View File

@ -5,6 +5,7 @@
#include "ss_proto.pb.h" #include "ss_proto.pb.h"
#include "cs_proto.pb.h" #include "cs_proto.pb.h"
#include "dbengine.h" #include "dbengine.h"
#include "app.h"
void GuildMgr::Init() void GuildMgr::Init()
{ {
@ -29,23 +30,58 @@ void GuildMgr::__GuildCreate(f8::JsonHttpRequest* request)
return; return;
} }
cs::MFGuildBasic* guild = new cs::MFGuildBasic;
TypeConvert::Convert(request, guild);
a8::XObject conn = DBEngine::Instance()->GetConnInfo(guild_id); a8::XObject conn = DBEngine::Instance()->GetConnInfo(guild_id);
DBEngine::Instance()->ExecAsyncQuery DBEngine::Instance()->ExecAsyncQuery
( (
conn, conn,
"", "INSERT INTO `guild`(gameid, guild_id, guild_name, guild_lv, guild_exp, guild_badge, "
" guild_apply_num, guild_notice, guild_declaration, guild_log, owner_id, "
" owner_name, owner_avatar_url, creator_id, creator_name, creator_avatar_url, "
" guild_data, guild_status, createtime, modifytime)"
"VALUES(%d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', "
" '%s', '%s', '%s', '%s', '%s', "
" '%s', %d, %d, %d)",
{ {
guild->_gameid(),
guild->guild_id(),
guild->guild_name(),
guild->guild_lv(),
guild->guild_exp(),
guild->guild_badge(),
0,
"",
guild->guild_declaration(),
"",
guild->guild_owner_id(),
guild->guild_owner_name(),
guild->guild_owner_avatar_url(),
guild->guild_owner_id(),
guild->guild_owner_name(),
guild->guild_owner_avatar_url(),
"",
0,
App::Instance()->nowtime,
App::Instance()->nowtime
}, },
a8::XParams() a8::XParams()
.SetSender(request), .SetSender(request)
.SetParam1(guild),
[] (a8::XParams& param, const f8::DataSet* data_set) [] (a8::XParams& param, const f8::DataSet* data_set)
{ {
f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData(); f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData();
cs::MFGuildBasic* guild = (cs::MFGuildBasic*)param.param1.GetUserData();
GuildMgr::Instance()->AddGuild(guild);
delete request; delete request;
}, },
[] (a8::XParams& param, int error_code, const std::string& error_msg) [] (a8::XParams& param, int error_code, const std::string& error_msg)
{ {
f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData(); f8::JsonHttpRequest* request = (f8::JsonHttpRequest*)param.sender.GetUserData();
cs::MFGuildBasic* guild = (cs::MFGuildBasic*)param.param1.GetUserData();
delete guild;
delete request; delete request;
}, },
0); 0);
@ -103,17 +139,23 @@ void GuildMgr::__GuildSearch(f8::JsonHttpRequest* request)
void GuildMgr::__GuildRank(f8::JsonHttpRequest* request) void GuildMgr::__GuildRank(f8::JsonHttpRequest* request)
{ {
int gameid = request->request.At("gameid")->AsXValue();
std::vector<cs::MFGuildBasic*>* sorted_guild_list = GetGuildRank(gameid);
request->resp_xobj->SetVal("errcode", 0); request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", ""); request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("curr_page", 0); request->resp_xobj->SetVal("curr_page", 0);
request->resp_xobj->SetVal("page_size", 50); request->resp_xobj->SetVal("page_size", 50);
request->resp_xobj->SetVal("_total_page", 1); request->resp_xobj->SetVal("_total_page", 1);
request->resp_xobj->SetVal("_total_count", sorted_guild_list_.size()); request->resp_xobj->SetVal("_total_count", 0);
a8::MutableXObject* guild_list = a8::MutableXObject::NewArray(); a8::MutableXObject* guild_list = a8::MutableXObject::NewArray();
for (auto& guild : sorted_guild_list_) { if (sorted_guild_list) {
a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject(); request->resp_xobj->SetVal("_total_count", sorted_guild_list->size());
TypeConvert::Convert(guild, guild_xobj); for (auto& guild : *sorted_guild_list) {
delete guild_xobj; a8::MutableXObject* guild_xobj = a8::MutableXObject::NewObject();
TypeConvert::Convert(guild, guild_xobj);
delete guild_xobj;
}
} }
request->resp_xobj->SetVal("guild_list", *guild_list); request->resp_xobj->SetVal("guild_list", *guild_list);
delete guild_list; delete guild_list;
@ -124,3 +166,14 @@ cs::MFGuildBasic* GuildMgr::GetGuild(long long guild_id)
auto itr = guild_hash_.find(guild_id); auto itr = guild_hash_.find(guild_id);
return itr != guild_hash_.end() ? itr->second : nullptr; return itr != guild_hash_.end() ? itr->second : nullptr;
} }
std::vector<cs::MFGuildBasic*>* GuildMgr::GetGuildRank(int gameid)
{
auto itr = sorted_game_guild_list_.find(gameid);
return itr != sorted_game_guild_list_.end() ? &itr->second : nullptr;
}
void GuildMgr::AddGuild(cs::MFGuildBasic* guild)
{
guild_hash_[guild->guild_id()] = guild;
}

View File

@ -21,8 +21,10 @@ class GuildMgr : public a8::Singleton<GuildMgr>
private: private:
cs::MFGuildBasic* GetGuild(long long guild_id); cs::MFGuildBasic* GetGuild(long long guild_id);
std::vector<cs::MFGuildBasic*>* GetGuildRank(int gameid);
void AddGuild(cs::MFGuildBasic* guild);
private: private:
std::map<long long, cs::MFGuildBasic*> guild_hash_; std::map<long long, cs::MFGuildBasic*> guild_hash_;
std::vector<cs::MFGuildBasic*> sorted_guild_list_; std::map<int, std::vector<cs::MFGuildBasic*>> sorted_game_guild_list_;
}; };

View File

@ -17,3 +17,8 @@ void TypeConvert::Convert(const cs::MFGuildBasic* guild_basic, a8::MutableXObjec
xobj->SetVal("guild_owner_name", guild_basic->guild_owner_name()); xobj->SetVal("guild_owner_name", guild_basic->guild_owner_name());
xobj->SetVal("guild_owner_avatar_url", guild_basic->guild_owner_avatar_url()); xobj->SetVal("guild_owner_avatar_url", guild_basic->guild_owner_avatar_url());
} }
void TypeConvert::Convert(const f8::JsonHttpRequest* request, cs::MFGuildBasic* guild_basic)
{
}

View File

@ -7,9 +7,15 @@ namespace cs
class MFGuildBasic; class MFGuildBasic;
} }
namespace f8
{
struct JsonHttpRequest;
}
class TypeConvert class TypeConvert
{ {
public: public:
static void Convert(const cs::MFGuildBasic* guild_basic, a8::MutableXObject* xobj); static void Convert(const cs::MFGuildBasic* guild_basic, a8::MutableXObject* xobj);
static void Convert(const f8::JsonHttpRequest* request, cs::MFGuildBasic* guild_basic);
}; };

View File

@ -100,6 +100,8 @@ message MFGuildBasic
optional string guild_owner_id = 8; //id optional string guild_owner_id = 8; //id
optional string guild_owner_name = 9; // optional string guild_owner_name = 9; //
optional string guild_owner_avatar_url = 10; // optional string guild_owner_avatar_url = 10; //
optional int32 _gameid = 100; //gameid
} }
// //