From 46adde072bd9f0866ff3b78ad93f5f17db2e993b Mon Sep 17 00:00:00 2001 From: hujiabin Date: Fri, 11 Nov 2022 19:23:11 +0800 Subject: [PATCH] 1 --- webapp/controller/MissionController.class.php | 28 ++-- webapp/services/MissionService.php | 130 +++++++++++------- 2 files changed, 96 insertions(+), 62 deletions(-) diff --git a/webapp/controller/MissionController.class.php b/webapp/controller/MissionController.class.php index 543da6ce..72aaf56c 100644 --- a/webapp/controller/MissionController.class.php +++ b/webapp/controller/MissionController.class.php @@ -41,22 +41,22 @@ class MissionController extends BaseAuthedController { { parent::_handlePre(); DynData::preload(); - $this->currRankSeasonMeta = mt\RankSeason::getCurrentSeason(); - if (!$this->currRankSeasonMeta) { - $this->_rspErr(10, 'server internal error'); - die(); - } +// $this->currRankSeasonMeta = mt\RankSeason::getCurrentSeason(); +// if (!$this->currRankSeasonMeta) { +// $this->_rspErr(10, 'server internal error'); +// die(); +// } $this->propertyChgService = new services\PropertyChgService(); $this->userInfo = $this->_safeGetOrmUserInfo(); - $this->seasonDb = Season::find($this->currRankSeasonMeta['id']); - if (!$this->seasonDb) { - Season::add($this->currRankSeasonMeta['id']); - $this->seasonDb = Season::find($this->currRankSeasonMeta['id']); - } - if (!$this->seasonDb) { - $this->_rspErr(10, 'server internal error'); - die(); - } +// $this->seasonDb = Season::find($this->currRankSeasonMeta['id']); +// if (!$this->seasonDb) { +// Season::add($this->currRankSeasonMeta['id']); +// $this->seasonDb = Season::find($this->currRankSeasonMeta['id']); +// } +// if (!$this->seasonDb) { +// $this->_rspErr(10, 'server internal error'); +// die(); +// } $this->awardService = new services\AwardService(); $this->missionService = new services\MissionService(); $this->missionService->init($this->userInfo, $this->seasonDb); diff --git a/webapp/services/MissionService.php b/webapp/services/MissionService.php index 6ae666eb..0e3e7e70 100644 --- a/webapp/services/MissionService.php +++ b/webapp/services/MissionService.php @@ -56,36 +56,40 @@ class MissionService extends BaseService { public function init($userInfo, $seasonDb) { $this->userInfo = $userInfo; - $this->seasonDb = $seasonDb; +// $this->seasonDb = $seasonDb; $this->hisBattleData = Battle::getMyBattleData(); - $seasonBattleData = json_decode($this->seasonDb['battle_data'], true); - if (!isset($seasonBattleData)) { - $seasonBattleData = array(); - } - $this->seasonBattleData = getXVal($seasonBattleData, 'season_data', array()); - $this->thisWeekBattleData = getXVal($seasonBattleData, 'this_week_data', array()); - $this->todayBattleData = getXVal($seasonBattleData, 'today_data', array()); - if (myself()->_getDaySeconds(getXVal($this->todayBattleData, 'modifytime', 0)) < - myself()->_getNowDaySeconds()) { - $this->todayBattleData = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime(), - ); - } - if (myself()->_getDaySeconds(getXVal($this->thisWeekBattleData, 'modifytime', 0)) < - myself()->_getMondaySeconds()) { - $this->thisWeekBattleData = array( - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime(), - ); - } +// $seasonBattleData = json_decode($this->seasonDb['battle_data'], true); +// if (!isset($seasonBattleData)) { +// $seasonBattleData = array(); +// } +// $this->seasonBattleData = getXVal($seasonBattleData, 'season_data', array()); +// $this->thisWeekBattleData = getXVal($seasonBattleData, 'this_week_data', array()); +// $this->todayBattleData = getXVal($seasonBattleData, 'today_data', array()); +// if (myself()->_getDaySeconds(getXVal($this->todayBattleData, 'modifytime', 0)) < +// myself()->_getNowDaySeconds()) { +// $this->todayBattleData = array( +// 'createtime' => myself()->_getNowTime(), +// 'modifytime' => myself()->_getNowTime(), +// ); +// } +// if (myself()->_getDaySeconds(getXVal($this->thisWeekBattleData, 'modifytime', 0)) < +// myself()->_getMondaySeconds()) { +// $this->thisWeekBattleData = array( +// 'createtime' => myself()->_getNowTime(), +// 'modifytime' => myself()->_getNowTime(), +// ); +// } $this->offerRewartdMission = BigData::getData(BigData::OFFER_REWARD_MISSION_TYPE); if (!$this->offerRewartdMission) { $this->offerRewartdMission = array( - 'missions' => array() + 'missions' => array(), + 'refreshtime' => 0 ); } - $this->refreshOfferRewardMission(); +// print_r($this->offerRewartdMission);die; + if (myself()->_getDaySeconds(myself()->_getNowTime()) - $this->offerRewartdMission['refreshtime'] >= 86400){ + $this->refreshOfferRewardMission(); + } } public function getMissionDto($userInfo, $seasonDb, $missionDb, $missionMeta) @@ -558,12 +562,31 @@ class MissionService extends BaseService { return myself()->_getV($x, $y); } + private function getMissionsCount(){ + $num = 0; + $missionHash = Mission::allToHash(); + if (count($this->offerRewartdMission['missions'])){ + foreach ($this->offerRewartdMission['missions'] as $val){ + $missionDb = getXVal($missionHash, $val['mission_id'], null); + $missionMeta = mt\Task::get($val['mission_id']); + $missionDto = $this->getMissionDto($this->userInfo, $this->seasonDb, $missionDb, $missionMeta); + if ($missionDto['state'] != 0){ + $num+=1; + } + } + } + return $num; + } + private function refreshOfferRewardMission() { $wantedRefreshMissionNum = mt\Parameter::getVal ('wanted_refresh_mission_num', 0); + if ($wantedRefreshMissionNum <= - count($this->offerRewartdMission['missions'])) { +// count($this->offerRewartdMission['missions']) + $this->getMissionsCount() + ) { return; } $metas = mt\Task::getOfferRewardMissions @@ -573,8 +596,8 @@ class MissionService extends BaseService { } foreach (array_rand($metas, count($metas)) as $key) { - $meta = $metas[$key]; - if (count($this->offerRewartdMission['missions']) >= + $meta = $metas[array_rand($metas,1)]; + if ($this->getMissionsCount() >= $wantedRefreshMissionNum) { break; } @@ -593,35 +616,46 @@ class MissionService extends BaseService { )); } } - $this->offerRewartdMission['refreshtime'] = myself()->_getNowTime(); +// unset($this->offerRewartdMission['missions']); +// print_r($this->offerRewartdMission['missions']);die; + $this->offerRewartdMission['refreshtime'] = myself()->_getDaySeconds(myself()->_getNowTime()); $this->saveOfferRewardMission(); } public function updateOfferRewardMission($missionId) { - $metas = mt\Task::getOfferRewardMissions - ($this->offerRewartdMission['missions']); - $selectMeta = null; - shuffle($metas); - foreach ($metas as $meta) { - if (!$this->inOfferRewardMission($meta['id'])) { - $selectMeta = $meta; - break; + foreach ($this->offerRewartdMission['missions'] as $k=>&$mission) { + if ($mission['mission_id'] == $missionId) { + unset($this->offerRewartdMission['missions'][$k]); } } - if ($selectMeta) { - foreach ($this->offerRewartdMission['missions'] as &$mission) { - if ($mission['mission_id'] == $missionId) { - $mission['mission_id'] = $selectMeta['id']; - $mission['createtime'] = myself()->_getNowTime(); - $mission['modifytime'] = myself()->_getNowTime(); - $mission['sendtime'] = 0; - $mission['objects'] = array(); - break; - } - } - } + print_r(json_encode($this->offerRewartdMission));die; + +// $metas = mt\Task::getOfferRewardMissions +// ($this->offerRewartdMission['missions']); +// $selectMeta = null; +// shuffle($metas); +// foreach ($metas as $meta) { +// if (!$this->inOfferRewardMission($meta['id'])) { +// $selectMeta = $meta; +// break; +// } +// } +// +// if ($selectMeta) { +// foreach ($this->offerRewartdMission['missions'] as $k=>&$mission) { +// if ($mission['mission_id'] == $missionId) { +// $mission['mission_id'] = $selectMeta['id']; +// $mission['createtime'] = myself()->_getNowTime(); +// $mission['modifytime'] = myself()->_getNowTime(); +// $mission['sendtime'] = 0; +// $mission['objects'] = array(); +// break; +// } +// } +// } + } public function &getOfferRewardMissions()