diff --git a/webapp/controller/RankingController.class.php b/webapp/controller/RankingController.class.php index d77c9cbd..b5a1c647 100644 --- a/webapp/controller/RankingController.class.php +++ b/webapp/controller/RankingController.class.php @@ -76,64 +76,89 @@ class RankingController extends BaseAuthedController { public function activityRankingList() { - $rankingList = $this->internalGetActivityRankList(1); + $rankingList = $this->internalGetActivityRankData(1); $this->_rspData(array( 'ranking_list' =>$rankingList )); } - private function internalGetActivityRankList($type) + private function internalGetActivityRankData($type) { + $userInfo = $this->_getOrmUserInfo(); + $myRanked = array( + 'ranked' => -1, + 'account_id' => $this->_getAccountId(), + 'address' => $this->_getOpenId(), + 'name' => $userInfo['name'], + 'sex' => $userInfo['sex'], + 'head_id' => $userInfo['hero_id'], + 'head_frame' => $userInfo['head_frame'], + 'level' => $userInfo['level'], + 'exp' => $userInfo['exp'], + 'rank' => $userInfo['rank'], + 'score' => $userInfo['score'], + 'gold' => $userInfo['gold'], + 'diamond' => $userInfo['diamond'], + 'hero_id' => $userInfo['hero_id'], + 'first_fight' => $userInfo['first_fight'], + ); $rankingList = array(); $meta = mt\RankActivity::get($type); - if (!$meta || !mt\RankActivity::isActivityPeriod($meta)) { - return $rankingList; - } - $row = myself()->_getSelfMysql()->execQueryOne( - 'SELECT COUNT(*) AS row_count FROM t_rank_activity ' . - 'WHERE type=:type AND value>=:value;', - array( - ':type' => $type, - ':value' => $meta['cond'] - ) - ); - if ($row['row_count'] > 0) { - $count = $row['row_count']; - $rows = myself()->_getSelfMysql()->execQuery( - 'SELECT * FROM t_rank_activity ' . - 'WHERE type=:type AND value>=:value ' . - 'ORDER BY value DESC, modifytime ASC ' . - "LIMIT ${count}", + if ($meta && mt\RankActivity::isActivityPeriod($meta)) { + $row = myself()->_getSelfMysql()->execQueryOne( + 'SELECT COUNT(*) AS row_count FROM t_rank_activity ' . + 'WHERE type=:type AND value>=:value;', array( ':type' => $type, ':value' => $meta['cond'] ) ); - $ranked = 1; - foreach ($rows as $row) { - $user = User::find($row['account_id']); - if ($user) { - array_push($rankingList, array( - 'ranked' => $ranked++, - 'account_id' => $user['account_id'], - 'address' => phpcommon\extractOpenId($user['account_id']), - 'name' => $user['name'], - 'sex' => $user['sex'], - 'head_id' => $user['hero_id'], - 'head_frame' => $user['head_frame'], - 'level' => $user['level'], - 'exp' => $user['exp'], - 'rank' => $user['rank'], - 'score' => $user['score'], - 'gold' => $user['gold'], - 'diamond' => $user['diamond'], - 'hero_id' => $user['hero_id'], - 'first_fight' => $user['first_fight'], - )); + if ($row['row_count'] > 0) { + $count = $row['row_count']; + $rows = myself()->_getSelfMysql()->execQuery( + 'SELECT * FROM t_rank_activity ' . + 'WHERE type=:type AND value>=:value ' . + 'ORDER BY value DESC, modifytime ASC ' . + "LIMIT ${count}", + array( + ':type' => $type, + ':value' => $meta['cond'] + ) + ); + $ranked = 1; + foreach ($rows as $row) { + $user = User::find($row['account_id']); + if ($user) { + if ($user['account_id'] == $myRanked['account_id']) { + $myRanked['ranked'] = $ranked; + } + array_push($rankingList, array( + 'ranked' => $ranked++, + 'account_id' => $user['account_id'], + 'address' => phpcommon\extractOpenId($user['account_id']), + 'name' => $user['name'], + 'sex' => $user['sex'], + 'head_id' => $user['hero_id'], + 'head_frame' => $user['head_frame'], + 'level' => $user['level'], + 'exp' => $user['exp'], + 'rank' => $user['rank'], + 'score' => $user['score'], + 'gold' => $user['gold'], + 'diamond' => $user['diamond'], + 'hero_id' => $user['hero_id'], + 'first_fight' => $user['first_fight'], + )); + } } } } - return $rankingList; + $rankingData = array( + 'type' => $type, + 'ranking_list' => $rankingList, + 'my_ranked' => $myRanked + ); + return $rankingData; } }