From 97013fbfd238249c8e35ced13a8fd78354240aa5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 17 Nov 2020 20:29:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0gameid=20channel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/imserver/dbhelper.cc | 4 +++- server/imserver/playermgr.cc | 8 ++++++-- sql/relationdb_n.sql | 6 +++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/server/imserver/dbhelper.cc b/server/imserver/dbhelper.cc index e281805..fa0f980 100644 --- a/server/imserver/dbhelper.cc +++ b/server/imserver/dbhelper.cc @@ -408,6 +408,8 @@ void DBHelper::ShuaOfflineUsers(Player* hum) } else { sql_params.push_back(10000 + (rand() % 50)); } + sql_params.push_back(hum->gameid); + sql_params.push_back(hum->channel); auto on_ok = [] (a8::XParams& param, const f8::DataSet* data_set) { @@ -443,7 +445,7 @@ void DBHelper::ShuaOfflineUsers(Player* hum) " A.user_value2, A.user_value3, A.last_logintime " "FROM `user` A " " LEFT JOIN (" + fmtstr + ") AS B ON B.account_id = A.account_id " - "WHERE A.idx > %d AND " + "WHERE A.idx > %d AND A.gameid = %d AND A.channel = %d AND " " B.account_id IS NULL LIMIT 1, 10;" ).c_str(), sql_params, diff --git a/server/imserver/playermgr.cc b/server/imserver/playermgr.cc index 695b57b..70dc788 100644 --- a/server/imserver/playermgr.cc +++ b/server/imserver/playermgr.cc @@ -456,14 +456,18 @@ void PlayerMgr::AsyncLogin1(const cs::CMLogin& msg) cs::CMLogin* msg_copy = new cs::CMLogin(); *msg_copy = msg; a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(msg.account_id()); + int gameid = f8::ExtractGameIdFromAccountId(msg.account_id()); + int channel = f8::ExtractChannelIdFromAccountId(msg.account_id()); DBEngine::Instance()->ExecAsyncScript (conn_info, - "INSERT INTO `user`(account_id, nickname, avatar_url," + "INSERT INTO `user`(gameid, channel, account_id, nickname, avatar_url," " sex, friend_data, createtime, modifytime, registertime)" - "VALUES ('%s', '%s', '%s', %d, '', %d, %d, %d)" + "VALUES (%d, %d, '%s', '%s', '%s', %d, '', %d, %d, %d)" "ON DUPLICATE KEY UPDATE nickname='%s', avatar_url='%s'," " sex=%d, last_logintime=%d, data_version1=data_version1 + 1;", { + gameid, + channel, msg.account_id(), msg.nickname(), msg.avatar_url(), diff --git a/sql/relationdb_n.sql b/sql/relationdb_n.sql index 99eb02a..b1eae40 100644 --- a/sql/relationdb_n.sql +++ b/sql/relationdb_n.sql @@ -38,6 +38,8 @@ DROP TABLE IF EXISTS `user`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `user` ( `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `gameid` int(11) NOT NULL DEFAULT '0' COMMENT 'gameid', + `channel` int(11) NOT NULL DEFAULT '0' COMMENT 'channel', `account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'account_id', `nickname` tinyblob COMMENT 'nickname', `avatar_url` varchar(256) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '', @@ -54,7 +56,9 @@ CREATE TABLE `user` ( `registertime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `last_logintime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', PRIMARY KEY (`idx`), - UNIQUE KEY `account_id` (`account_id`) + UNIQUE KEY `account_id` (`account_id`), + KEY `gameid` (`gameid`), + KEY `channel` (`channel`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;