102 lines
3.7 KiB
PHP
102 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace services;
|
|
|
|
require_once('mt/Rank.php');
|
|
require_once('mt/Season.php');
|
|
require_once('models/User.php');
|
|
require_once('models/Season.php');
|
|
require_once('models/RealtimeData.php');
|
|
require_once('services/PropertyChgService.php');
|
|
|
|
use mt;
|
|
use models\User;
|
|
use models\Season;
|
|
use models\RealtimeData;
|
|
|
|
class SeasonService extends BaseService
|
|
{
|
|
|
|
public function checkSeason($userInfo, $awardService, $propertyService)
|
|
{
|
|
$currSeasonMeta = mt\RankSeason::getCurrentSeason();
|
|
if ($currSeasonMeta && $userInfo['last_season_id'] > 0 && $currSeasonMeta['id'] > $userInfo['last_season_id']) {
|
|
$currRankMeta = mt\Rank::getRankById($userInfo['rank']);
|
|
$dropRankMeta = mt\Rank::getRankById($currRankMeta ? $currRankMeta['next_season'] : 1);
|
|
|
|
$award = Season::seasonReward($currRankMeta);
|
|
//掉段
|
|
if ($dropRankMeta) {
|
|
myself()->_updateUserInfo(array(
|
|
'rank' => $dropRankMeta['id'],
|
|
'score' => $dropRankMeta['rank_score'],
|
|
'last_season_id' => $currSeasonMeta['id'],
|
|
));
|
|
}
|
|
myself()->_addItems($award, $awardService, $propertyService);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
//赛季结束后奖励及重置排位段位
|
|
public function seasonAward($userInfo)
|
|
{
|
|
$currRankMeta = mt\Rank::getRankById($userInfo['rank']);
|
|
$dropRankMeta = mt\Rank::getRankById($currRankMeta ? $currRankMeta['next_season'] : 1);
|
|
$award = array();
|
|
if ($currRankMeta) {
|
|
$award = Season::seasonReward($currRankMeta);
|
|
if ($dropRankMeta) {
|
|
myself()->_updateUserInfo(array(
|
|
'rank' => $dropRankMeta['id'],
|
|
'score' => $dropRankMeta['rank_score'],
|
|
));
|
|
}
|
|
}
|
|
return $award;
|
|
}
|
|
|
|
public function resetRankGainAward()
|
|
{
|
|
// $currSeasonMeta = mt\RankSeason::getCurrentSeason();
|
|
// $season = RealtimeData::getRankSeason();
|
|
// if ($currSeasonMeta && $currSeasonMeta['id'] > $season) {
|
|
// $rows = myself()->_getMysql('')->execQuery(
|
|
// 'SELECT * 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']);
|
|
// $propertyChgService = new PropertyChgService();
|
|
// myself()->_addItems($award, null, $propertyChgService);
|
|
// myself()->_updateUserInfo(array(
|
|
// 'last_season_id' => $currSeasonMeta['id'],
|
|
// 'rank' => $dropRankMeta['id'],
|
|
// 'score' => $dropRankMeta['rank_score'],
|
|
// ));
|
|
// }
|
|
// error_log("Battle Ranking : Season ".$season." Settlement Success !");
|
|
// RealtimeData::setRankSeason($currSeasonMeta['id']);
|
|
// }
|
|
}
|
|
|
|
|
|
}
|