propertyChgService = new services\PropertyChgService(); $this->awardService = new services\AwardService(); } /** * 星星之路的赛季结算 */ public function missionStarSeasonSettlement(){ $season = RealtimeData::getMissionSeason(); $currMissionSeasonMeta = \mt\StarLevel::getCurrentSeason(); if ($currMissionSeasonMeta && $currMissionSeasonMeta['id'] > $season){ $max_star_num = mt\Parameter::getVal('starroad_restart_point',400); $rows = myself()->_getMysql('')->execQuery( 'SELECT account_id,star_num FROM t_user WHERE star_num>:star_num', array( "star_num"=>$max_star_num ) ); if (count($rows) > 0){ foreach ($rows as $row){ $crystalNum = round($row['star_num']/1000); myself()->switchAccount($row['account_id']); $items = array( array( 'item_id' => ComputingPower::CRYSTAL1, 'item_num' => $crystalNum, ) ); myself()->_addItems($items, null, $this->propertyChgService); myself()->_updateUserInfo(array( 'star_num' => $max_star_num, )); // myself()->_getMysql('')->execQuery( // 'UPDATE t_user SET star_num=:star_num WHERE account_id=:account_id', // array( // "star_num"=>$max_star_num, // "account_id"=>$row['account_id'], // ) // ); } } error_log("DailyRequestController : Mission Star Season ".$season." Settlement Success !" . " Request Time : ". date('Y-M-D h:i:s',time())); RealtimeData::setMissionSeason($currMissionSeasonMeta['id']); $this->_rspData(array('message'=>'星星之路结算成功')); return; } $this->_rspOk(); } /** * 通行证的赛季结算 */ public function battlePassSeasonSettlement(){ $season = RealtimeData::getPassSeason(); $currSeasonMeta = \mt\BattlePass::getCurrentSeason(); if ($currSeasonMeta && $currSeasonMeta['id'] > $season) { myself()->_getMysql('')->execQuery( 'UPDATE t_user SET activated=:activated,level=:level,exp=:exp', array( "activated" => 0, "level" => 1, "exp" => 0, ) ); error_log("DailyRequestController : Battle Pass Season ".$season." Settlement Success !" . " Request Time : ". date('Y-M-D h:i:s',time())); RealtimeData::setPassSeason($currSeasonMeta['id']); $this->_rspData(array('message'=>'通行证结算成功')); return; } $this->_rspOk(); } /** * 排位战斗的赛季结算 */ public function battleRankingSeasonSettlement(){ $currSeasonMeta = mt\RankSeason::getCurrentSeason(); $lastSeasonMeta = mt\RankSeason::getLastSeason(); $season = RealtimeData::getRankSeason(); // if ($currSeasonMeta && $currSeasonMeta['id'] > $season) { if (!$currSeasonMeta && $lastSeasonMeta && $lastSeasonMeta['id'] > $season) { if ($lastSeasonMeta > 1){ $SeasonMeta = mt\RankSeason::get($season-1); $time = strtotime($SeasonMeta['start_time']); $rows = myself()->_getMysql('')->execQuery( 'SELECT account_id,`rank`,score FROM t_user ' . 'WHERE score_modifytime > :score_modifytime AND score_modifytime <> createtime', array( 'score_modifytime' => $time ) ); }else{ $rows = myself()->_getMysql('')->execQuery( 'SELECT account_id,`rank`,score FROM t_user ' . 'WHERE score_modifytime <> createtime' ); } if (count($rows) < 1){ error_log("resetRankGainAward : No user participates in the ranking"); die; } foreach ($rows as $row){ $currRankMeta = mt\Rank::getRankById($row['rank']); if (! $currRankMeta){ error_log("resetRankGainAward : rankRank@rankRank.php field rank error" . json_encode($row)); continue; } $dropRankMeta = mt\Rank::getRankById($currRankMeta['next_season']); if (! $dropRankMeta){ error_log("resetRankGainAward : rankRank@rankRank.php field next_season error" . json_encode($row)); continue; } $award = Season::seasonReward($currRankMeta); myself()->switchAccount($row['account_id']); myself()->_addItems($award, null, $this->propertyChgService); $data = array( 'state' => 1, 'last_rank' => $row['rank'], 'current_rank' => $dropRankMeta['id'], 'last_score' => $row['score'], 'current_score' => $dropRankMeta['rank_score'], 'awards' => json_encode($award), ); RankingSetRecord::upsert($data); myself()->_updateUserInfo(array( 'last_season_id' => $lastSeasonMeta['id'], 'rank' => $dropRankMeta['id'], 'score' => $dropRankMeta['rank_score'], )); } error_log("DailyRequestController : Battle Ranking Season ".$season." Settlement Success !" . " Request Time : ". date('Y-M-D h:i:s',time())); RealtimeData::setRankSeason($lastSeasonMeta['id']); $this->_rspData(array('message'=>'排位结算成功')); return; } $this->_rspOk(); } /** * 算力周期cec计算 */ public function computingPowerRewards(){ $currentMeta = \mt\HashRateCommon::getLatestPeriod(); if (\mt\HashRateCommon::checkAwaitTime()){ $temp = ComputingPower::getAccountGroup($currentMeta['id']); if (! $temp){ error_log("computingPowerRewards : No one involved"); die; } foreach ($temp as $row){ if ( ! RewardsCec::findByAccount($row['account_id'],$currentMeta['id'])){ RewardsCec::celCecReward($row['account_id'],$currentMeta); error_log("computingPowerRewards : ACCOUNT_ID_{$row['account_id']} CEC Reward record completion"); } } $this->_rspData(array('message'=>'算力结算成功')); return; } $this->_rspOk(); } }