This commit is contained in:
aozhiwei 2021-12-15 13:40:07 +08:00
parent 53d5818e08
commit 0e8054548f
2 changed files with 59 additions and 1 deletions

View File

@ -67,6 +67,8 @@ class MissionController extends BaseAuthedController {
$missionHash = Mission::allToHash(); $missionHash = Mission::allToHash();
$missionDtoList1 = array(); $missionDtoList1 = array();
$missionDtoList2 = array(); $missionDtoList2 = array();
$specMissionDto = null;
$notFinishedCount = 0;
foreach ($missionMetaList as $missionMeta) { foreach ($missionMetaList as $missionMeta) {
$missionDb = getXVal($missionHash, $missionMeta['id'], null); $missionDb = getXVal($missionHash, $missionMeta['id'], null);
$missionDto = $this->missionService->getMissionDto( $missionDto = $this->missionService->getMissionDto(
@ -76,11 +78,22 @@ class MissionController extends BaseAuthedController {
array_push($missionDtoList1, $missionDto); array_push($missionDtoList1, $missionDto);
} else { } else {
array_push($missionDtoList2, $missionDto); array_push($missionDtoList2, $missionDto);
if ($missionDto['state'] == Mission::NOT_FINISHED_STATE) {
$notFinishedCount++;
}
if ($missionMeta['condition'] == mt\Task::FINISHED_ALL_DAILY_MISSION_COND) {
$specMissionDto = &$missionDto;
}
} }
} else { } else {
array_push($missionDtoList1, $missionDto); array_push($missionDtoList1, $missionDto);
} }
} }
if ($specMissionDto &&
$specMissionDto['state'] == Mission::NOT_FINISHED_STATE &&
$notFinishedCount <= 1) {
$specMissionDto['state'] == Mission::RECEIVEABLE_STATE;
}
$this->_rspData(array( $this->_rspData(array(
'current_active_value' => $this->_getV(TN_ACTIVE, 0), 'current_active_value' => $this->_getV(TN_ACTIVE, 0),
'max_active_value' => 0, 'max_active_value' => 0,
@ -112,6 +125,12 @@ class MissionController extends BaseAuthedController {
$this->_rspErr(3, '任务目标未达成'); $this->_rspErr(3, '任务目标未达成');
return; return;
} }
if ($missionMeta['condition'] == mt\Task::FINISHED_ALL_DAILY_MISSION_COND) {
if (!$this->specMissionIsFinished($missionDto, $missionMeta)) {
$this->_rspErr(3, '任务目标未达成');
return;
}
}
if ($missionDto['state'] != Mission::RECEIVEABLE_STATE) { if ($missionDto['state'] != Mission::RECEIVEABLE_STATE) {
$this->_rspErr(3, '未知任务状态'); $this->_rspErr(3, '未知任务状态');
return; return;
@ -139,6 +158,8 @@ class MissionController extends BaseAuthedController {
$missionMetaList = mt\Task::getCustomTypeMetaList($type); $missionMetaList = mt\Task::getCustomTypeMetaList($type);
$missionHash = Mission::allToHash(); $missionHash = Mission::allToHash();
$missionDtoList = array(); $missionDtoList = array();
$specMissionDto = null;
$notFinishedCount = 0;
foreach ($missionMetaList as $missionMeta) { foreach ($missionMetaList as $missionMeta) {
$missionDb = getXVal($missionHash, $missionMeta['id'], null); $missionDb = getXVal($missionHash, $missionMeta['id'], null);
$missionDto = $this->missionService->getMissionDto( $missionDto = $this->missionService->getMissionDto(
@ -146,6 +167,22 @@ class MissionController extends BaseAuthedController {
if ($missionDto['state'] == Mission::RECEIVEABLE_STATE) { if ($missionDto['state'] == Mission::RECEIVEABLE_STATE) {
array_push($missionDtoList, $missionDto); array_push($missionDtoList, $missionDto);
} }
if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) {
if ($missionMeta['subtype'] == mt\Task::DAILY_ACTIVE_VALUE_MISSON_SUBTYPE) {
} else {
if ($missionDto['state'] == Mission::NOT_FINISHED_STATE) {
$notFinishedCount++;
}
if ($missionMeta['condition'] == mt\Task::FINISHED_ALL_DAILY_MISSION_COND) {
$specMissionDto = &$missionDto;
}
}
}
}
if ($specMissionDto &&
$specMissionDto['state'] == Mission::NOT_FINISHED_STATE &&
$notFinishedCount <= 1) {
$specMissionDto['state'] == Mission::RECEIVEABLE_STATE;
} }
foreach ($missionDtoList as $missionDto) { foreach ($missionDtoList as $missionDto) {
$missionMeta = mt\Mission::get($missionDto['mission_id']); $missionMeta = mt\Mission::get($missionDto['mission_id']);
@ -161,4 +198,26 @@ class MissionController extends BaseAuthedController {
)); ));
} }
private function specMissionIsFinished($missionDto, $missionMeta)
{
$type = mt\Task::DAILY_MISSION_CUSTOM_TYPE;
$missionMetaList = mt\Task::getCustomTypeMetaList($type);
$missionHash = Mission::allToHash();
$notFinishedCount = 0;
foreach ($missionMetaList as $missionMeta) {
$missionDb = getXVal($missionHash, $missionMeta['id'], null);
$missionDto = $this->missionService->getMissionDto(
$this->userInfo, $this->seasonDb, $missionDb, $missionMeta);
if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) {
if ($missionMeta['subtype'] == mt\Task::DAILY_ACTIVE_VALUE_MISSON_SUBTYPE) {
} else {
if ($missionDto['state'] == Mission::NOT_FINISHED_STATE) {
$notFinishedCount++;
}
}
}
}
return $notFinishedCount == 1;
}
} }

View File

@ -292,7 +292,6 @@ class MissionService extends BaseService {
case mt\Task::FINISHED_ALL_DAILY_MISSION_COND: case mt\Task::FINISHED_ALL_DAILY_MISSION_COND:
{ {
//完成所有每日任务 //完成所有每日任务
$handled = false;
} }
break; break;
case mt\Task::SHOP_BUY_TIMES_COND: case mt\Task::SHOP_BUY_TIMES_COND: