_rspErr(1, 'param error'); return; } $user = User::findByAddress($address); if (!$user){ myself()->_rspErr(1, 'user not found'); return; } $data = array(); $currentCircuitMeta = mt\CircuitTime::getCurrentCircuit(); if ($currentCircuitMeta){ $metas = mt\CircuitTime::getListBySeason($currentCircuitMeta['circuit_season']); foreach ($metas as $meta){ $info = array( 'start_time' => strtotime($meta['start_time']), 'end_time' => strtotime($meta['end_time']), 'reward' => -1, ); $rewardDb = CircuitReward::find($address,$currentCircuitMeta['circuit_season'],$meta['circuit_phase']); if ($rewardDb){ $info['reward'] = $rewardDb['reward_num']; } array_push($data,$info); } } $this->_rspData(array('data' => $data)); } public function circuitSettlement(){ $currentStageMeta = \mt\CircuitTime::getCurrentStage(); $prevStageMeta = \mt\CircuitTime::getPrevStage(); if (!$currentStageMeta && $prevStageMeta && !CircuitReward::_verifySettlement($prevStageMeta['circuit_season'],$prevStageMeta['circuit_phase'])){ $rows = Circuit::getRankingList($prevStageMeta['circuit_season']); if (count($rows) > 0){ $totalWeight = 0; $rate = \mt\Parameter::getVal('circuit_reward_rate',''); $count = floor(count($rows) * $rate) ; foreach ($rows as $k=>$value){ $ranking = $k+1; $rewardWeight = \mt\CircuitReward::getRewardWeight($ranking); if ($ranking <= $count){ $totalWeight += $rewardWeight; } } $cecPool = $prevStageMeta['cec_pool']; foreach ($rows as $k=>$value){ $cec = 0; $ranking = $k+1; $rewardWeight = \mt\CircuitReward::getRewardWeight($ranking); if ($ranking <= $count){ $cec = max(1, floor(($rewardWeight / $totalWeight) * $cecPool)); } $user = User::find($value['account_id']); CircuitReward::add( $user['account_id'], $user['address'], $prevStageMeta['circuit_season'], $prevStageMeta['circuit_phase'], $ranking, $cec ); } } $this->_rspOk(); return; } $this->_rspErr(1,'未满足结算条件'); } }