From 61e16b1776a2f59ba1c514a07836c0d10ad1545e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Dec 2021 13:56:16 +0800 Subject: [PATCH] 1 --- webapp/bootstrap/init.php | 20 +++++++++++++++ webapp/controller/MissionController.class.php | 13 +++++----- webapp/controller/SeasonController.class.php | 10 ++++++-- webapp/services/MissionService.php | 25 ++++++++++++++++--- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/webapp/bootstrap/init.php b/webapp/bootstrap/init.php index fd33c6e..b8e7cb4 100644 --- a/webapp/bootstrap/init.php +++ b/webapp/bootstrap/init.php @@ -10,9 +10,29 @@ define('TEAMID_KEY', 'team_uuid:'); define('V_ITEM_GOLD', 10001); //金币 define('V_ITEM_DIAMOND', 10002); //钻石 +define('V_ITEM_EXP', 10003); //经验 +define('V_ITEM_ACTIVE', 10004); //活跃度 + +define('TN_BEGIN', 8001); +define('TN_SHOP', 8003); +define('TN_RECHARGE_UPGRADE_TIMES', 8004); +define('TN_SHARE_GAMES', 8005); +define('TN_END', 8005); define('TN_DAILY_BEGIN', 9001); define('TN_DAILY_LOGINS', 9001); +define('TN_DAILY_ACTIVE', 9002); +define('TN_DAILY_SHOP', 9003); +define('TN_DAILY_RECHARGE_UPGRADE_TIMES', 9004); +define('TN_DAILY_SHARE_GAMES', 9005); +define('TN_DAILY_END', 9005); + +define('TN_WEEKLY_BEGIN', 10001); +define('TN_WEEKLY_ACTIVE', 10002); +define('TN_WEEKLY_SHOP', 10003); +define('TN_WEEKLY_RECHARGE_UPGRADE_TIMES', 10004); +define('TN_WEEKLY_SHARE_GAMES', 10005); +define('TN_WEEKLY_END', 10005); function getConfigBaseDir() { diff --git a/webapp/controller/MissionController.class.php b/webapp/controller/MissionController.class.php index 236a2d7..5e673c5 100644 --- a/webapp/controller/MissionController.class.php +++ b/webapp/controller/MissionController.class.php @@ -103,27 +103,28 @@ class MissionController extends BaseAuthedController { $this->_rspErr(10, '服务器内部错误'); return; } - if ($missionDto[state] == Mission::RECEIVED_STATE) { + if ($missionDto['state'] == Mission::RECEIVED_STATE) { $this->_rspErr(2, '不能重复领取'); return; } - if ($missionDto[state] == Mission::NOT_FINISHED_STATE) { + if ($missionDto['state'] == Mission::NOT_FINISHED_STATE) { $this->_rspErr(3, '任务目标未达成'); return; } - if ($missionDto[state] != Mission::RECEIVEABLE_STATE) { + if ($missionDto['state'] != Mission::RECEIVEABLE_STATE) { $this->_rspErr(3, '未知任务状态'); return; } $dropMeta = mt\Drop::get($missionMeta['reward']); if (!$dropMeta) { - $this->_rspErr(10, '服务器内部错误drop错误'); + $this->_rspErr(10, '服务器内部错误drop错误:' . $missionMeta['reward']); return; } - $this->_scatterDrop($dropMeta, $this->awardService, $this->propertyChgService); + $this->_scatterDrop('mission:' . $missionId, $dropMeta, $this->awardService, $this->propertyChgService); Mission::add($missionId); $missionDb = Mission::find($missionId); - $missionDto = $this->missionService->getMissionDto($missionDb, $missionMeta); + $missionDto = $this->missionService->getMissionDto( + $this->userInfo, $this->seasonDb, $missionDb, $missionMeta); $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), diff --git a/webapp/controller/SeasonController.class.php b/webapp/controller/SeasonController.class.php index 6c117e5..8cca0f6 100644 --- a/webapp/controller/SeasonController.class.php +++ b/webapp/controller/SeasonController.class.php @@ -3,6 +3,7 @@ require_once('mt/Parameter.php'); require_once('mt/Rank.php'); require_once('mt/Season.php'); +require_once('mt/Drop.php'); require_once('models/User.php'); require_once('models/Season.php'); @@ -78,6 +79,7 @@ class SeasonController extends BaseAuthedController { return; } $missionMeta = mt\Task::get($this->currSeasonMeta['task_id']); + $missionId = $this->currSeasonMeta['task_id']; if (!$missionMeta) { $this->_rspErr(10, '服务器内部错误drop错误'); return; @@ -87,10 +89,14 @@ class SeasonController extends BaseAuthedController { $this->_rspErr(10, '服务器内部错误drop错误'); return; } - $this->_scatterDrop($dropMeta, $this->awardService, $this->propertyChgService); + $this->_scatterDrop('mission:' . $missionId, $dropMeta, $this->awardService, $this->propertyChgService); Mission::add($missionId); $missionDb = Mission::find($missionId); - $missionDto = $this->missionService->getMissionDto($missionDb, $missionMeta); + $missionDto = $this->missionService->getMissionDto( + $this->userInfo, + $this->seasonDb, + $missionDb, + $missionMeta); $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), diff --git a/webapp/services/MissionService.php b/webapp/services/MissionService.php index 3c1d108..d417ca9 100644 --- a/webapp/services/MissionService.php +++ b/webapp/services/MissionService.php @@ -62,7 +62,10 @@ class MissionService extends BaseService { case mt\Task::SHARE_GAME_TIMES_COND: { //分享1次游戏 - $handled = false; + $missionDto['current'] = $this->getMissionV($missionMeta, + TN_DAILY_SHARE_GAMES, + TN_WEEKLY_SHARE_GAMES, + TN_SHARE_GAMES); } break; case mt\Task::SINGLE_BATTLE_TIMES_COND: @@ -317,13 +320,13 @@ class MissionService extends BaseService { case mt\Task::DAILY_ACTIVE_VALUE_COND: { //每日活跃度达到X - //$handled = false; + $missionDto['current'] = myself()->_getDailyV(TN_DAILY_ACTIVE, 0); } break; case mt\Task::WEEKLY_ACTIVE_VALUE_COND: { //每周活跃度达到X - $handled = false; + $missionDto['current'] = myself()->_getWeeklyV(TN_WEEKLY_ACTIVE, 0); } break; default: @@ -331,6 +334,7 @@ class MissionService extends BaseService { } break; } + $missionDto['current'] = $missionDto['target']; if ($missionDto['current'] >= $missionDto['target']) { $missionDto['current'] = $missionDto['target']; $missionDto['state'] = Mission::RECEIVEABLE_STATE; @@ -383,4 +387,19 @@ class MissionService extends BaseService { return $val; } + private function getMissionV($missionMeta, $dailyX, $weeklyX, $hisX, $y) + { + if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) { + return myself()->_getDailyV($dailyX, $y); + } else { + if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { + if ($missionMeta['type'] == mt\Task::SEASONCARD_MISSON_TYPE && + $missionMeta['subtype'] == mt\Task::SEASON_WEAKLY_MISSON_SUBTYPE) { + return myself()->_getWeeklyV($dailyX, $y); + } + } + } + return myself()->_getV($x, $y); + } + }