From b75d4811da26355603397f8f78a6fb670b50554b Mon Sep 17 00:00:00 2001 From: hujiabin Date: Tue, 25 Oct 2022 19:48:20 +0800 Subject: [PATCH] 1 --- webapp/bootstrap/constant.php | 1 + webapp/controller/SeasonController.class.php | 57 +++++- webapp/controller/TeamController.class.php | 8 +- webapp/controller/UserController.class.php | 6 +- webapp/services/BattleDataService.php | 181 +++++++++---------- 5 files changed, 146 insertions(+), 107 deletions(-) diff --git a/webapp/bootstrap/constant.php b/webapp/bootstrap/constant.php index afbd8aae..3a9014d1 100644 --- a/webapp/bootstrap/constant.php +++ b/webapp/bootstrap/constant.php @@ -1,6 +1,7 @@ _rspErr(1, 'params rank error'); die(); } - $users = User::orderBy(User::getUserByRank($rank_param)); - $season_rank = array(); - if (count($users)>0){ - foreach ($users as $k=>$user){ - if ($k<20){ + $r = $this->_getRedis($this->rankingUnid); + $rankList = $this->readRankingList($r,$this->rankingUnid); + $list = array(); + if (!$rankList){ + $users = User::orderBy(User::allUser()); + $rewardParamMeta = \mt\Parameter::getByName('rank_ring_reward'); + $rewardParamMetaValue = $rewardParamMeta ? $rewardParamMeta['param_value'] : ''; + $rewardList = explode('|',$rewardParamMetaValue); + if (count($users)>0){ + foreach ($users as $k=>$user){ $userDto = User::getUserByRankMess($user); $userDto['rank_sort'] = $k+1; - array_push($season_rank,$userDto); + switch ($userDto['rank_sort']){ + case 1:$userDto['ring_item_id'] = $rewardList[0];break; + case 2:$userDto['ring_item_id'] = $rewardList[1];break; + case 3:$userDto['ring_item_id'] = $rewardList[2];break; + default : $userDto['ring_item_id'] = 0; + } + array_push($rankList,$userDto); + } + foreach ($rankList as $k=>$value){ + if ($value['rank_sort'] <= 200){ + $cec = 999; + $rankList[$k]['rewardCEC'] = $cec; + }else{ + $rankList[$k]['rewardCEC'] = 0; + } } } + $this->saveRankingList($r,$this->rankingUnid,$rankList); } - $this->_rspData(['info'=>$season_rank]); + + foreach ($rankList as $v){ + if ($rank_param == $v['rank']){ + array_push($list,$v); + } + } + $this->_rspData(['info'=>$list]); } public function getDataInfo(){ @@ -262,4 +289,20 @@ class SeasonController extends BaseAuthedController { return $info; } + private function readRankingList($r,$rankUnid) + { + $list = $r->get(RANKING_KEY.$rankUnid); + if (empty($list)) { + return array(); + } + $list = json_decode($list, true); + return $list; + } + + private function saveRankingList($r,$rankUnid ,$list) + { + $r->set(RANKING_KEY.$rankUnid , json_encode($list)); + $r->pexpire(RANKING_KEY.$rankUnid , 6*60*60*1000); + } + } diff --git a/webapp/controller/TeamController.class.php b/webapp/controller/TeamController.class.php index afb6d296..c266b42d 100644 --- a/webapp/controller/TeamController.class.php +++ b/webapp/controller/TeamController.class.php @@ -265,10 +265,10 @@ class TeamController extends BaseAuthedController { return; } } -// if ($teamDb['slot_num'] >= 4){ -// $this->_rspErr(1, 'Maximum size of team'); -// return; -// } + if (count($teamDb['member_list'])>$slotNum){ + $this->_rspErr(1, 'slot_num Insufficient '); + return; + } $teamDb['slot_num'] = $slotNum; $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); diff --git a/webapp/controller/UserController.class.php b/webapp/controller/UserController.class.php index 84851577..14b7d6fe 100644 --- a/webapp/controller/UserController.class.php +++ b/webapp/controller/UserController.class.php @@ -64,7 +64,7 @@ class UserController extends BaseAuthedController { $this->_setV(TN_RANK_STATUS, 0, 1); } //elo 衰减 - $this->checkElo($userInfo); + $this->dampingElo($userInfo); $userInfo = $this->_getOrmUserInfo(); //跟新登录时间 $this->_updateUserInfo(array( @@ -713,7 +713,7 @@ class UserController extends BaseAuthedController { ]); } - private function checkElo($userInfo){ + private function dampingElo($userInfo){ $time_diff = myself()->_getNowTime()-$userInfo['last_login_time']; if ($userInfo['elo'] > 1500 && floor($time_diff/86400) > 0){ $newElo = min(round(pow(log10(floor($time_diff/86400)),1.5)*350),450); @@ -742,6 +742,8 @@ class UserController extends BaseAuthedController { 'gold' => 0, 'diamond' => 0, 'level' => 1, + 'rank' => 0, + 'score' => 0, 'exp' => 0, 'last_season_id' => $currSeasonMeta ? $currSeasonMeta['id'] : 0, 'score_modifytime' => $this->_getNowTime(), diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 63ac79f5..fb401651 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -163,17 +163,9 @@ class BattleDataService extends BaseService { break; case self::MATCH_MODE_MATCH: { - //排位赛 - $this->updateSeasonData(); - myself()->_incDailyV(TN_DAILY_RANK_BATTLE_TIMES, 0, 1); - - /*$userInfo = myself()->_getOrmUserInfo(); - $newScore = FormulaService::calcBattleAfterRankScore($userInfo,$_REQUEST); - $newRank = $userInfo['rank']; - $newScore = 789; - mt\Rank::calcNewRankAndScore( $newRank, $newScore); - print_r($newRank.':'.$newScore);die;*/ - + //排位赛(和匹配合二为一) +// $this->updateSeasonData(); +// myself()->_incDailyV(TN_DAILY_RANK_BATTLE_TIMES, 0, 1); } break; case self::MATCH_MODE_PVE: @@ -535,8 +527,25 @@ class BattleDataService extends BaseService { } } +// private function updatePvpData() +// { +// error_log('updateBattleData1'); +// $this->rankActivityService->updateBattleData(); +// error_log('updateBattleData2'); +// $hisBattleData = Battle::getMyBattleData(); +// if (!isset($hisBattleData)) { +// $hisBattleData = array( +// 'createtime' => myself()->_getNowTime(), +// 'modifytime' => myself()->_getNowTime() +// ); +// } +// $this->apply($hisBattleData); +// Battle::add(json_encode($hisBattleData)); +// } + private function updatePvpData() { + error_log('updateBattleData1'); $this->rankActivityService->updateBattleData(); error_log('updateBattleData2'); @@ -549,94 +558,78 @@ class BattleDataService extends BaseService { } $this->apply($hisBattleData); Battle::add(json_encode($hisBattleData)); - } - private function updateSeasonData() - { - - error_log('updateBattleData1'); - $this->rankActivityService->updateBattleData(); - error_log('updateBattleData2'); - $this->currSeasonMeta = mt\RankSeason::getCurrentSeason(); - if (!$this->currSeasonMeta) { - return; - } error_log('updateBattleData3'); - $this->seasonDb = Season::find($this->currSeasonMeta['id']); - if (!$this->seasonDb) { - Season::add($this->currSeasonMeta['id']); + $this->currSeasonMeta = mt\RankSeason::getCurrentSeason(); + if ( $this->currSeasonMeta ) { $this->seasonDb = Season::find($this->currSeasonMeta['id']); - } - if (!$this->seasonDb) { - return; - } - error_log('updateBattleData4'); - $this->updateScore(); - $hisBattleData = Battle::getMyBattleData(); - if (!isset($hisBattleData)) { - $hisBattleData = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() + if (!$this->seasonDb) { + Season::add($this->currSeasonMeta['id']); + $this->seasonDb = Season::find($this->currSeasonMeta['id']); + } + if (!$this->seasonDb) { + return; + } + error_log('updateBattleData4'); + $this->updateScore(); + + $seasonBattleData = json_decode($this->seasonDb['battle_data'], true); + if (!isset($seasonBattleData['today_data'])) { + $seasonBattleData['today_data'] = array( + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ); + } + if (!isset($seasonBattleData['season_data'])) { + $seasonBattleData['season_data'] = array( + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ); + } + if (!isset($seasonBattleData['his_week_data'])) { + $seasonBattleData['his_week_data'] = array( + ); + } + if (!isset($seasonBattleData['this_week_data'])) { + $seasonBattleData['this_week_data'] = array( + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ); + } + if (myself()->_getDaySeconds($seasonBattleData['today_data']['modifytime']) < + myself()->_getNowDaySeconds()) { + $seasonBattleData['today_data'] = array( + 'createtime' => $seasonBattleData['today_data']['createtime'], + 'modifytime' => myself()->_getNowTime() + ); + } + if (myself()->_getDaySeconds($seasonBattleData['this_week_data']['modifytime']) < + myself()->_getMondaySeconds()) { + $seasonBattleData['this_week_data'] = array( + 'createtime' => $seasonBattleData['this_week_data']['createtime'], + 'modifytime' => myself()->_getNowTime() + ); + } + $oldSeasonDataKills = getXVal($seasonBattleData['season_data'], 'total_kills_times', 0); + $this->apply($seasonBattleData['season_data']); + $newSeasonDataKills = getXVal($seasonBattleData['season_data'], 'total_kills_times', 0); + if ($newSeasonDataKills > $oldSeasonDataKills) { + Season::update($this->currSeasonMeta['id'], array( + 'kills_modifytime' => myself()->_getNowTime(), + )); + Battle::update(array( + 'kills_modifytime' => myself()->_getNowTime(), + )); + } + $this->apply($seasonBattleData['today_data']); + $this->apply($seasonBattleData['this_week_data']); + Season::update( + $this->currSeasonMeta['id'], + array( + 'battle_data' => json_encode($seasonBattleData), + ) ); } - $this->apply($hisBattleData); - Battle::add(json_encode($hisBattleData)); - $seasonBattleData = json_decode($this->seasonDb['battle_data'], true); - if (!isset($seasonBattleData['today_data'])) { - $seasonBattleData['today_data'] = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ); - } - if (!isset($seasonBattleData['season_data'])) { - $seasonBattleData['season_data'] = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ); - } - if (!isset($seasonBattleData['his_week_data'])) { - $seasonBattleData['his_week_data'] = array( - ); - } - if (!isset($seasonBattleData['this_week_data'])) { - $seasonBattleData['this_week_data'] = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ); - } - if (myself()->_getDaySeconds($seasonBattleData['today_data']['modifytime']) < - myself()->_getNowDaySeconds()) { - $seasonBattleData['today_data'] = array( - 'createtime' => $seasonBattleData['today_data']['createtime'], - 'modifytime' => myself()->_getNowTime() - ); - } - if (myself()->_getDaySeconds($seasonBattleData['this_week_data']['modifytime']) < - myself()->_getMondaySeconds()) { - $seasonBattleData['this_week_data'] = array( - 'createtime' => $seasonBattleData['this_week_data']['createtime'], - 'modifytime' => myself()->_getNowTime() - ); - } - $oldSeasonDataKills = getXVal($seasonBattleData['season_data'], 'total_kills_times', 0); - $this->apply($seasonBattleData['season_data']); - $newSeasonDataKills = getXVal($seasonBattleData['season_data'], 'total_kills_times', 0); - if ($newSeasonDataKills > $oldSeasonDataKills) { - Season::update($this->currSeasonMeta['id'], array( - 'kills_modifytime' => myself()->_getNowTime(), - )); - Battle::update(array( - 'kills_modifytime' => myself()->_getNowTime(), - )); - } - $this->apply($seasonBattleData['today_data']); - $this->apply($seasonBattleData['this_week_data']); - Season::update( - $this->currSeasonMeta['id'], - array( - 'battle_data' => json_encode($seasonBattleData), - ) - ); } private function updatePveData()