game2006api/webapp/services/SeasonService.php
2023-08-04 18:14:00 +08:00

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']);
// }
}
}