From 8ea44ee20fa07e4d29a0426396d659a5ea1e279f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 9 Dec 2021 14:08:43 +0800 Subject: [PATCH] 1 --- webapp/services/MissionService.php | 168 +++++++++++------------------ 1 file changed, 65 insertions(+), 103 deletions(-) diff --git a/webapp/services/MissionService.php b/webapp/services/MissionService.php index dc7196e..496a2f3 100644 --- a/webapp/services/MissionService.php +++ b/webapp/services/MissionService.php @@ -34,6 +34,7 @@ class MissionService extends BaseService { return $missionDto; } } + $handled = true; switch ($missionMeta['type']) { case mt\Task::DAILY_LOGIN_TIMES_COND: { @@ -50,96 +51,70 @@ class MissionService extends BaseService { case mt\Task::TOTAL_BATTLE_TIMES_COND: { //进行X场比赛 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_battle_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_battle_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_battle_times'); } break; case mt\Task::SHARE_GAME_TIMES_COND: { - //分享1次游戏 未实现 + //分享1次游戏 + $handled = false; } break; case mt\Task::SINGLE_BATTLE_TIMES_COND: { //进行X场单人比赛 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_single_battle_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_single_battle_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_single_battle_times'); } break; case mt\Task::TEAM_BATTLE_TIMES_COND: { //进行X场组队比赛 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_team_battle_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_team_battle_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_team_battle_times'); } break; case mt\Task::SINGLE_BATTLE_RANK_COND: { //单人比赛排名前X - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'single_battle_rank', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'single_battle_rank', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'single_battle_rank'); } break; case mt\Task::TEAM_BATTLE_RANK_COND: { //组队比赛排名前X - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'team_battle_rank', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'team_battle_rank', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'team_battle_rank'); } break; case mt\Task::TOTAL_KILL_NUM_COND: { //累计击败X个敌人 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_kills_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_kills_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_kills_times'); } break; case mt\Task::TOTAL_DAMGE_OUT_COND: { //累计造成X点伤害 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_damage_out', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_damage_out', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_damage_out'); } break; case mt\Task::RESCUE_TEAMMATE_TIMES_COND: { //救援X个队友 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'rescue_teammate_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'rescue_teammate_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'rescue_teammate_times'); } break; case mt\Task::TOTAL_SURVIVAL_TIME_COND: { //累计生存X分钟 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_alive_time', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_alive_time', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_alive_time'); } break; case mt\Task::USE_WEAPON_KILL_NUM_COND: @@ -165,121 +140,90 @@ class MissionService extends BaseService { case mt\Task::TOTAL_DIVING_TIMES_COND: { //累计潜水X次 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'diving_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'diving_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'diving_times'); } break; case mt\Task::TOTAL_DAMAGE_IN_COND: { //累计受到X点伤害 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_damage_in', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_damage_in', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_damage_in'); } break; case mt\Task::TOTAL_RECOVER_HP_COND: { //累计恢复X点血量 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'total_recover_hp', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'total_recover_hp', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'total_recover_hp'); } break; case mt\Task::TOTAL_OPEN_AIRDROP_COND: { //累计打开空投补给X次 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'open_airdrop_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'open_airdrop_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'open_airdrop_times'); } break; case mt\Task::BATTLE_IN_HERO_LV_COND: { - //单局内英雄技能升级到X级 未实现 + //单局内英雄技能升级到X级 + $handled = false; } break; case mt\Task::BATTLE_IN_GUN_LV_COND: { - //单局内英雄专属枪械升到X级 未实现 + //单局内英雄专属枪械升到X级 + $handled = false; } break; case mt\Task::TOTAL_MEDICINE_TIMES_COND: { //累计使用X药品Y次 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'use_medicine_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'use_medicine_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'use_medicine_times'); } break; case mt\Task::TOTAL_DESTORY_CAR_TIMES_COND: { //累计破坏载具X个 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'destory_car_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'destory_car_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'destory_car_times'); } break; case mt\Task::TOTAL_USE_CAMOUFLAGE_TIMES_COND: { //累计使用X个伪装物 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'use_camouflage_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'use_camouflage_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'use_camouflage_times'); } break; case mt\Task::TOTAL_USE_SKILL_TIMES_COND: { //累计使用X次角色技能 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'use_skill_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'use_skill_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'use_skill_times'); } break; case mt\Task::RIDE_CAR_MOVE_DISTANCE_COND: { //驾驶或乘坐载具累计移动X米(所有模式) - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'ride_car_move_distance', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'ride_car_move_distance', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'ride_car_move_distance'); } break; case mt\Task::RIDE_CAR_KILL_NUM_COND: { //驾驶或乘坐载具累计击杀X个敌人(所有模式) - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'ride_car_kills', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'ride_car_kills', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'ride_car_kills'); } break; case mt\Task::LIKE_TEAMMATE_TIMES_COND: { //战斗结算中累计给队友点赞X次 - if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { - $missionDto['current'] = getXVal($seasonDb, 'to_teammate_like_times', 0); - } else { - $missionDto['current'] = getXVal($userInfo, 'to_teammate_like_times', 0); - } + $missionDto['current'] = getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, + 'to_teammate_like_times'); } break; case mt\Task::SEASON_LEVEL_COND: @@ -356,4 +300,22 @@ class MissionService extends BaseService { return $missionDto; } + private function getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $key) + { + $val = 0; + 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) { + $weeklyData = getXVal($seasonDb, 'weekly_data', array()); + $weekDb = getXVal($weeklyData, $missionMeta['keek'], array()); + $val = getXVal($weekDb, $key, 0); + } else { + $val = getXVal($seasonDb, $key, 0); + } + } else { + $val = getXVal($userInfo, $key, 0); + } + return $val; + } + }