From 3a33f74470069c4a8d685f1a563634a5022cc42c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 25 Feb 2022 16:30:45 +0800 Subject: [PATCH] 1 --- webapp/models/BigData.php | 2 ++ webapp/mt/Task.php | 17 ++++++++++- webapp/services/MissionService.php | 47 ++++++++++++++++++++++++++++-- 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/webapp/models/BigData.php b/webapp/models/BigData.php index 9705f2a9..0a3d6101 100644 --- a/webapp/models/BigData.php +++ b/webapp/models/BigData.php @@ -7,6 +7,8 @@ use phpcommon\SqlHelper; class BigData extends BaseModel { + const OFFER_REWARD_MISSION_TYPE = 'offer.reward.missions'; + public static function getData($type) { $row = SqlHelper::ormSelectOne( diff --git a/webapp/mt/Task.php b/webapp/mt/Task.php index 0401d1e5..824ec3e3 100644 --- a/webapp/mt/Task.php +++ b/webapp/mt/Task.php @@ -82,7 +82,7 @@ class Task { if ($type == self::OFFER_REWARD_MISSION_CUSTOM_TYPE) { foreach ($missionService->getOfferRewardMissions() as $missionId) { $meta = self::get($missionId); - if ($meta) { + if ($meta && $meta['type'] == self::OFFER_REWARD_MISSON_TYPE) { array_push($metaList, $meta); } } @@ -119,6 +119,21 @@ class Task { return $meta['type'] == self::OFFER_REWARD_MISSION_CUSTOM_TYPE; } + public static function getOfferRewardMissions($excludeMetas) + { + $metas = array(); + foreach (self::getMetaList() as $meta) { + if ($meta['type'] == self::OFFER_REWARD_MISSON_TYPE) { + if (!array_find($excludeMetas, function($val) { + + })) { + array_push($metas, $meta); + } + } + } + return $metas; + } + protected static function getMetaList() { if (!self::$metaList) { diff --git a/webapp/services/MissionService.php b/webapp/services/MissionService.php index d6141470..7a4e1ae2 100644 --- a/webapp/services/MissionService.php +++ b/webapp/services/MissionService.php @@ -3,16 +3,39 @@ namespace services; require_once('mt/Task.php'); +require_once('mt/Parameter.php'); require_once('models/Mission.php'); require_once('models/Battle.php'); +require_once('models/BigData.php'); use phpcommon\SqlHelper; use mt; use models\User; use models\Mission; use models\Battle; +use models\BigData; +/* + offer.reward.missions + { + "refreshtime": 0, + "missions": [ + { + "mission_id": 100, + "createtime": 0, + "modifytime": 0, + "sendtime": 0, + "objects": [ + { + "type": 1, + "id": 23142 + } + ] + } + ] + } + */ class MissionService extends BaseService { private $userInfo = null; @@ -21,6 +44,7 @@ class MissionService extends BaseService { private $seasonBattleData = array(); private $thisWeekBattleData = array(); private $todayBattleData = array(); + private $offerRewartdMission = array(); public function init($userInfo, $seasonDb) { @@ -48,6 +72,16 @@ class MissionService extends BaseService { 'modifytime' => myself()->_getNowTime(), ); } + $this->offerRewartdMission = BigData::getData(BigData::OFFER_REWARD_MISSION_TYPE); + if (!$this->offerRewartdMission) { + $this->offerRewartdMission = array(); + } + { + $refreshTime = getXVal($this->offerRewartdMission, 'refreshtime'); + if (myself()->_getNowDaySeconds() > $refreshTime) { + $this->refreshOfferRewardMission(); + } + } } public function getMissionDto($userInfo, $seasonDb, $missionDb, $missionMeta) @@ -513,10 +547,17 @@ class MissionService extends BaseService { return myself()->_getV($x, $y); } - public function getOfferRewardMissions() + private function refreshOfferRewardMission() { - $missions = array(); - return $missions; + $this->offerRewartdMission = myself()->_getNowTime(); + $num = mt\Parameter::getVal('wanted_refresh_mission_num', 0); + $sentMissions = array(); + foreach ($this->offerRewartdMission as $mission) { + if ($mission['sendtime'] > 0) { + array_push($sentMissions, $mission); + } + } + $metas = mt\Task::getOfferRewardMissions($this->offerRewartdMission['missions']); } private function getOfferRewardMissionInfo($missionId)