game2006api/webapp/controller/RookieTaskController.class.php
hujiabin f51739d820 1
2024-10-11 15:12:55 +08:00

92 lines
3.2 KiB
PHP

<?php
require_once('services/PropertyChgService.php');
require_once('services/AwardService.php');
require_once('services/RookieTaskService.php');
require_once('mt/RookieTask.php');
require_once('models/RookieTask.php');
use models\RookieTask;
class RookieTaskController extends BaseAuthedController {
public function bindRookieTask(){
RookieTask::bindUser();
$this->_rspOk();
}
public function taskList(){
$day = getReqVal('day', 1);
$metaList = \mt\RookieTask::getCustomDayMetaList($day);
$taskList1 = array();
foreach ($metaList as $meta){
$metaDto = \services\RookieTaskService::getTaskDto($meta);
array_push($taskList1,$metaDto);
}
$metaList2 = \mt\RookieTask::getCustomDayMetaList();
$taskList2 = array();
foreach ($metaList2 as $meta){
$metaDto = \services\RookieTaskService::getTaskDto($meta);
array_push($taskList2,$metaDto);
}
$this->_rspData(array(
'task_list1' => $taskList1,
'task_list2' => $taskList2,
));
}
public function commitTaskS(){
$task_id = getReqVal('task_id', 0);
$taskMeta = mt\RookieTask::find($task_id);
if (!$taskMeta) {
$this->_rspErr(1, 'task_id parameter error');
return;
}
$taskMetaDto = \services\RookieTaskService::getTaskDto($taskMeta);
if (!$taskMetaDto) {
$this->_rspErr(10, 'server internal error');
return;
}
if ($taskMetaDto['state'] == \services\RookieTaskService::RECEIVED_STATE) {
$this->_rspErr(2, "Can't get it again");
return;
}
if ($taskMetaDto['state'] == \services\RookieTaskService::NOT_FINISHED_STATE) {
$this->_rspErr(3, 'task objectives not achieved');
return;
}
if ($taskMetaDto['state'] == \services\RookieTaskService::UNARRIVED_TIME_STATE) {
$this->_rspErr(3, 'The task is not started');
return;
}
$dropMeta = mt\Drop::get($taskMeta['reward']);
if (!$dropMeta) {
$this->_rspErr(10, 'server internal error:' . $taskMeta['reward']);
return;
}
$propertyChgService = new services\PropertyChgService();
$awardService = new services\AwardService();
$this->_scatterDrop('rookieTask:' . $task_id, $dropMeta, $awardService, $propertyChgService);
RookieTask::add($task_id);
$this->_rspData(array(
'award' => $awardService->toDto(),
'property_chg' => $propertyChgService->toDto(),
));
}
public function getTaskRedTags(){
$metaList = \mt\RookieTask::allList();
$list = array();
foreach ($metaList as $meta){
$metaDto = \services\RookieTaskService::getTaskDto($meta);
if ($metaDto['state'] == \services\RookieTaskService::FINISHED_STATE){
array_push($list,$meta['task_day']);
}
}
$this->_rspData(array(
'list' => $list,
));
}
}