This commit is contained in:
aozhiwei 2020-09-15 15:02:50 +08:00
parent 3af8b04c82
commit 3b39d9ff80
4 changed files with 59 additions and 4 deletions

View File

@ -1,12 +1,14 @@
#include "precompile.h" #include "precompile.h"
#include <a8/timer.h> #include <a8/timer.h>
#include <a8/openssl.h>
#include "asynctaskmgr.h" #include "asynctaskmgr.h"
#include "app.h" #include "app.h"
#include "player.h" #include "player.h"
#include "playermgr.h" #include "playermgr.h"
#include "dbhelper.h" #include "dbhelper.h"
#include "dbengine.h"
#include "cs_proto.pb.h" #include "cs_proto.pb.h"
#include "ss_proto.pb.h" #include "ss_proto.pb.h"
@ -116,6 +118,13 @@ struct RecommandFriendTask
} }
}; };
struct CreateGuildTask
{
long long seqid = 0;
ss::MFIMMsgConext context;
cs::CMGuildCreate msg;
};
void AsyncTaskMgr::Init() void AsyncTaskMgr::Init()
{ {
@ -193,6 +202,33 @@ void AsyncTaskMgr::CreateRecommandFriendTask(Player* hum)
); );
} }
void AsyncTaskMgr::CreateNewGuildTask(const ss::MFIMMsgConext& context, const cs::CMGuildCreate& msg)
{
CreateGuildTask* task = new CreateGuildTask();
{
task->seqid = App::Instance()->NewSeqId();
task->context = context;
task->msg = msg;
}
std::string guild_id = a8::XValue(context.user_info().base_data().guild_id()).GetString();
long long crc32_code = a8::openssl::Crc32(
(unsigned char*)guild_id.data(),
guild_id.size()
);
a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(crc32_code);
DBEngine::Instance()->ExecAsyncScript
(
conn_info,
"UPDATE `friend_apply` SET status=%d WHERE target_id='%s' AND sender_id='%s';",
{
},
a8::XParams(),
nullptr,
nullptr,
crc32_code
);
}
void AsyncTaskMgr::_SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg) void AsyncTaskMgr::_SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg)
{ {
QueryUserStatusTask* task = GetQueryUserStatusTask(msg.context().seqid()); QueryUserStatusTask* task = GetQueryUserStatusTask(msg.context().seqid());

View File

@ -1,13 +1,20 @@
#pragma once #pragma once
namespace cs
{
class CMGuildCreate;
}
namespace ss namespace ss
{ {
class MFIMMsgConext;
class SS_IM_PushUserOnlineState; class SS_IM_PushUserOnlineState;
class SS_IM_RandomUsersResponse; class SS_IM_RandomUsersResponse;
} }
struct QueryUserStatusTask; struct QueryUserStatusTask;
struct RecommandFriendTask; struct RecommandFriendTask;
struct CreateGuildTask;
struct AsyncTaskContext; struct AsyncTaskContext;
class Player; class Player;
class AsyncTaskMgr : public a8::Singleton<AsyncTaskMgr> class AsyncTaskMgr : public a8::Singleton<AsyncTaskMgr>
@ -22,6 +29,7 @@ public:
void CreateQueryUserStatusTask(Player* hum, std::vector<std::string>& account_ids); void CreateQueryUserStatusTask(Player* hum, std::vector<std::string>& account_ids);
void CreateRecommandFriendTask(Player* hum); void CreateRecommandFriendTask(Player* hum);
void CreateNewGuildTask(const ss::MFIMMsgConext& context, const cs::CMGuildCreate& msg);
void _SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg); void _SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg);
void _SS_IM_RandomUsersResponse(f8::MsgHdr& hdr, const ss::SS_IM_RandomUsersResponse& msg); void _SS_IM_RandomUsersResponse(f8::MsgHdr& hdr, const ss::SS_IM_RandomUsersResponse& msg);
@ -36,4 +44,5 @@ private:
private: private:
std::map<long long, QueryUserStatusTask*> query_user_status_tasks_; std::map<long long, QueryUserStatusTask*> query_user_status_tasks_;
std::map<long long, RecommandFriendTask*> recommand_friend_tasks_; std::map<long long, RecommandFriendTask*> recommand_friend_tasks_;
std::map<long long, CreateGuildTask*> create_guild_tasks_;
}; };

View File

@ -6,6 +6,7 @@
#include "cs_proto.pb.h" #include "cs_proto.pb.h"
#include "ss_proto.pb.h" #include "ss_proto.pb.h"
#include "MSConnMgr.h" #include "MSConnMgr.h"
#include "asynctaskmgr.h"
void GuildMgr::Init() void GuildMgr::Init()
{ {
@ -93,6 +94,7 @@ void GuildMgr::_CMGuildCreate(const ss::MFIMMsgConext& context, const cs::CMGuil
ForwardGuildSMMsg(context, respmsg); ForwardGuildSMMsg(context, respmsg);
return; return;
} }
AsyncTaskMgr::Instance()->CreateNewGuildTask(context, msg);
} }
void GuildMgr::_CMGuildJoin(const ss::MFIMMsgConext& context, const cs::CMGuildJoin& msg) void GuildMgr::_CMGuildJoin(const ss::MFIMMsgConext& context, const cs::CMGuildJoin& msg)

View File

@ -88,10 +88,18 @@ DROP TABLE IF EXISTS `guild`;
/*!40101 SET character_set_client = utf8 */; /*!40101 SET character_set_client = utf8 */;
CREATE TABLE `guild` ( CREATE TABLE `guild` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`guild_id` bigint NOT NULL COMMENT 'guild_id', `guild_id` bigint NOT NULL COMMENT '公会id',
`guild_name` tinyblob COMMENT 'guild_name', `guild_name` tinyblob COMMENT '公会名字',
`owner_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '公会主', `guild_lv` int(11) NOT NULL DEFAULT '0' COMMENT '公会等级',
`creator_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '公会创建者', `guild_exp` int(11) NOT NULL DEFAULT '0' COMMENT '公会经验',
`guild_badge` int(11) NOT NULL DEFAULT '0' COMMENT '公会徽章',
`guild_apply_num` int(11) NOT NULL DEFAULT '0' COMMENT '申请人数',
`guld_administers` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '公会管理员',
`guld_notice` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '公会公告',
`guld_declaration` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '公会宣言',
`guild_log` mediumblob COMMENT '公会日志',
`owner_id` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '公会主',
`creator_id` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '公会创建者',
`guild_data` mediumblob COMMENT '公会数据', `guild_data` mediumblob COMMENT '公会数据',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',