From 0856cd5a4bbb79f7cc2351857c6e5154292edb5d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 1 Apr 2022 14:50:20 +0800 Subject: [PATCH] 1 --- webapp/controller/BattleController.class.php | 44 +++++++++++++------- webapp/models/Hero.php | 17 ++++++-- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/webapp/controller/BattleController.class.php b/webapp/controller/BattleController.class.php index 48debba6..5dce83ae 100644 --- a/webapp/controller/BattleController.class.php +++ b/webapp/controller/BattleController.class.php @@ -1,8 +1,10 @@ _getAccountId()) { - $self = $member; - } - } - if (!$self) { - myself()->_rspErr(1, 'data error'); - return; - } - } $data = array( 'members' => array() ); + error_log(json_encode($members)); foreach ($members as $member) { - $info = array(); + $info = array( + 'account_id' => $member['account_id'], + 'session_id' => $member['session_id'], + 'hero_uniid' => $member['hero_uniid'], + 'battle_uuid' => $member['battle_uuid'], + 'hero_dto' => '', + + 'is_valid_battle' => 0, + 'payload' => json_encode($member['cmjoin']), + 'errcode' => 0, + 'errmsg' => '', + ); + if (!phpcommon\isValidSessionId($member['account_id'], $member['session_id'])) { + $info['errcode'] = 50; + $info['errmsg'] = 'invalid session_id'; + } else { + $heroDb = Hero::findByAccountId($member['account_id'], $member['hero_uniid']); + if ($heroDb) { + $info['is_valid_battle'] = 1; + $info['hero_dto'] = json_encode($Hero::toDto($heroDb)); + } else { + $info['errcode'] = 51; + $info['errmsg'] = 'paramater error'; + } + } array_push($data['members'], $info); } - myself()->_rspData($data()); + error_log(json_encode($data)); + myself()->_rspData($data); } } diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index 1c4df212..06a150d5 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -24,9 +24,19 @@ class Hero extends BaseModel { const QUALITY_LOCK = 2; public static function find($heroUniId) + { + return self::internalFind(myself()->_getAccountId(), $heroUniId); + } + + public static function findByAccountId($accountId, $heroUniId) + { + return self::internalFind($accountId, $heroUniId); + } + + private static function internalFind($accountId, $heroUniId) { $row = SqlHelper::ormSelectOne( - myself()->_getSelfMysql(), + myself()->_getMysql($accountId), 't_hero', array( 'idx' => $heroUniId, @@ -34,8 +44,9 @@ class Hero extends BaseModel { ); if ($row) { $row['hero_uniid'] = $row['idx']; - if ($row['account_id'] != myself()->_getAccountId()) { - if (!NftService::isHeroOwner(myself()->_getOpenId(), $row['token_id'])) { + if ($row['account_id'] != $accountId) { + $openId = phpcommon\extractOpenId($accountId); + if (!NftService::isHeroOwner($opneId, $row['token_id'])) { $row = null; } }