完成任务改造

This commit is contained in:
aozhiwei 2021-12-13 15:12:24 +08:00
parent 3787351b0b
commit 0d66eef855
3 changed files with 54 additions and 51 deletions

View File

@ -57,6 +57,7 @@ class MissionController extends BaseAuthedController {
} }
$this->awardService = new services\AwardService(); $this->awardService = new services\AwardService();
$this->missionService = new services\MissionService(); $this->missionService = new services\MissionService();
$this->missionService->init($this->userInfo, $this->seasonDb);
} }
public function missionList() public function missionList()

View File

@ -55,6 +55,7 @@ class SeasonController extends BaseAuthedController {
die(); die();
} }
$this->missionService = new services\MissionService(); $this->missionService = new services\MissionService();
$this->missionService->init($this->userInfo, $this->seasonDb);
} }
public function info() public function info()

View File

@ -15,10 +15,11 @@ class MissionService extends BaseService {
private $userInfo = null; private $userInfo = null;
private $seasonDb = null; private $seasonDb = null;
private $missionDb = null;
public function init($userInfo, $seasonDb, $missionDb) public function init($userInfo, $seasonDb)
{ {
$this->userInfo = $userInfo;
$this->seasonDb = $seasonDb;
} }
public function getMissionDto($userInfo, $seasonDb, $missionDb, $missionMeta) public function getMissionDto($userInfo, $seasonDb, $missionDb, $missionMeta)
@ -53,13 +54,13 @@ class MissionService extends BaseService {
case mt\Task::PLAYER_LEVEL_COND: case mt\Task::PLAYER_LEVEL_COND:
{ {
//玩家等级达到X //玩家等级达到X
$missionDto['current'] = $userInfo['level']; $missionDto['current'] = $this->userInfo['level'];
} }
break; break;
case mt\Task::TOTAL_BATTLE_TIMES_COND: case mt\Task::TOTAL_BATTLE_TIMES_COND:
{ {
//进行X场比赛 //进行X场比赛
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_battle_times'); 'total_battle_times');
} }
break; break;
@ -75,56 +76,56 @@ class MissionService extends BaseService {
case mt\Task::SINGLE_BATTLE_TIMES_COND: case mt\Task::SINGLE_BATTLE_TIMES_COND:
{ {
//进行X场单人比赛 //进行X场单人比赛
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_single_battle_times'); 'total_single_battle_times');
} }
break; break;
case mt\Task::TEAM_BATTLE_TIMES_COND: case mt\Task::TEAM_BATTLE_TIMES_COND:
{ {
//进行X场组队比赛 //进行X场组队比赛
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_team_battle_times'); 'total_team_battle_times');
} }
break; break;
case mt\Task::SINGLE_BATTLE_RANK_COND: case mt\Task::SINGLE_BATTLE_RANK_COND:
{ {
//单人比赛排名前X //单人比赛排名前X
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'single_battle_rank'); 'single_battle_rank');
} }
break; break;
case mt\Task::TEAM_BATTLE_RANK_COND: case mt\Task::TEAM_BATTLE_RANK_COND:
{ {
//组队比赛排名前X //组队比赛排名前X
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'team_battle_rank'); 'team_battle_rank');
} }
break; break;
case mt\Task::TOTAL_KILL_NUM_COND: case mt\Task::TOTAL_KILL_NUM_COND:
{ {
//累计击败X个敌人 //累计击败X个敌人
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_kills_times'); 'total_kills_times');
} }
break; break;
case mt\Task::TOTAL_DAMGE_OUT_COND: case mt\Task::TOTAL_DAMGE_OUT_COND:
{ {
//累计造成X点伤害 //累计造成X点伤害
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_damage_out'); 'total_damage_out');
} }
break; break;
case mt\Task::RESCUE_TEAMMATE_TIMES_COND: case mt\Task::RESCUE_TEAMMATE_TIMES_COND:
{ {
//救援X个队友 //救援X个队友
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'rescue_teammate_times'); 'rescue_teammate_times');
} }
break; break;
case mt\Task::TOTAL_SURVIVAL_TIME_COND: case mt\Task::TOTAL_SURVIVAL_TIME_COND:
{ {
//累计生存X分钟 //累计生存X分钟
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_alive_time'); 'total_alive_time');
} }
break; break;
@ -155,104 +156,104 @@ class MissionService extends BaseService {
case mt\Task::TOTAL_DIVING_TIMES_COND: case mt\Task::TOTAL_DIVING_TIMES_COND:
{ {
//累计潜水X次 //累计潜水X次
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'diving_times'); 'diving_times');
} }
break; break;
case mt\Task::TOTAL_DAMAGE_IN_COND: case mt\Task::TOTAL_DAMAGE_IN_COND:
{ {
//累计受到X点伤害 //累计受到X点伤害
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_damage_in'); 'total_damage_in');
} }
break; break;
case mt\Task::TOTAL_RECOVER_HP_COND: case mt\Task::TOTAL_RECOVER_HP_COND:
{ {
//累计恢复X点血量 //累计恢复X点血量
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'total_recover_hp'); 'total_recover_hp');
} }
break; break;
case mt\Task::TOTAL_OPEN_AIRDROP_COND: case mt\Task::TOTAL_OPEN_AIRDROP_COND:
{ {
//累计打开空投补给X次 //累计打开空投补给X次
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'open_airdrop_times'); 'open_airdrop_times');
} }
break; break;
case mt\Task::BATTLE_IN_HERO_LV_COND: case mt\Task::BATTLE_IN_HERO_LV_COND:
{ {
//单局内英雄技能升级到X级 //单局内英雄技能升级到X级
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'max_single_battle_hero_lv'); 'max_single_battle_hero_lv');
} }
break; break;
case mt\Task::BATTLE_IN_GUN_LV_COND: case mt\Task::BATTLE_IN_GUN_LV_COND:
{ {
//单局内英雄专属枪械升到X级 cond_param1=英雄id //单局内英雄专属枪械升到X级 cond_param1=英雄id
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'max_single_battle_hero_weapon_lv' . $missionMeta['param1']); 'max_single_battle_hero_weapon_lv' . $missionMeta['param1']);
} }
break; break;
case mt\Task::TOTAL_MEDICINE_TIMES_COND: case mt\Task::TOTAL_MEDICINE_TIMES_COND:
{ {
//累计使用X药品Y次 cond_param1=槽位 //累计使用X药品Y次 cond_param1=槽位
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'use_medicine_times'); 'use_medicine_times');
} }
break; break;
case mt\Task::TOTAL_DESTORY_CAR_TIMES_COND: case mt\Task::TOTAL_DESTORY_CAR_TIMES_COND:
{ {
//累计破坏载具X个 //累计破坏载具X个
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'destory_car_times'); 'destory_car_times');
} }
break; break;
case mt\Task::TOTAL_USE_CAMOUFLAGE_TIMES_COND: case mt\Task::TOTAL_USE_CAMOUFLAGE_TIMES_COND:
{ {
//累计使用X个伪装物 //累计使用X个伪装物
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'use_camouflage_times'); 'use_camouflage_times');
} }
break; break;
case mt\Task::TOTAL_USE_SKILL_TIMES_COND: case mt\Task::TOTAL_USE_SKILL_TIMES_COND:
{ {
//累计使用X次角色技能 //累计使用X次角色技能
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'use_skill_times'); 'use_skill_times');
} }
break; break;
case mt\Task::RIDE_CAR_MOVE_DISTANCE_COND: case mt\Task::RIDE_CAR_MOVE_DISTANCE_COND:
{ {
//驾驶或乘坐载具累计移动X米所有模式 //驾驶或乘坐载具累计移动X米所有模式
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'ride_car_move_distance'); 'ride_car_move_distance');
} }
break; break;
case mt\Task::RIDE_CAR_KILL_NUM_COND: case mt\Task::RIDE_CAR_KILL_NUM_COND:
{ {
//驾驶或乘坐载具累计击杀X个敌人所有模式 //驾驶或乘坐载具累计击杀X个敌人所有模式
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'ride_car_kills'); 'ride_car_kills');
} }
break; break;
case mt\Task::LIKE_TEAMMATE_TIMES_COND: case mt\Task::LIKE_TEAMMATE_TIMES_COND:
{ {
//战斗结算中累计给队友点赞X次 //战斗结算中累计给队友点赞X次
$missionDto['current'] = $this->getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $missionDto['current'] = $this->getBattleData($missionDb, $missionMeta,
'to_teammate_like_times'); 'to_teammate_like_times');
} }
break; break;
case mt\Task::SEASON_LEVEL_COND: case mt\Task::SEASON_LEVEL_COND:
{ {
//赛季段位达到X //赛季段位达到X
$missionDto['current'] = $userInfo['rank']; $missionDto['current'] = $this->userInfo['rank'];
} }
break; break;
case mt\Task::CONSUME_GOLD_COND: case mt\Task::CONSUME_GOLD_COND:
{ {
//消耗X个金币 //消耗X个金币
$missionDto['current'] = $userInfo['consume_gold']; $missionDto['current'] = $this->userInfo['consume_gold'];
} }
break; break;
case mt\Task::BATTLE_RANK_COND: case mt\Task::BATTLE_RANK_COND:
@ -355,20 +356,20 @@ class MissionService extends BaseService {
return $missionDto; return $missionDto;
} }
private function getBattleData($userInfo, $seasonDb, $missionDb, $missionMeta, $key) private function getBattleData($missionDb, $missionMeta, $key)
{ {
$val = 0; $val = 0;
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) { if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if ($missionMeta['type'] == mt\Task::SEASONCARD_MISSON_TYPE && if ($missionMeta['type'] == mt\Task::SEASONCARD_MISSON_TYPE &&
$missionMeta['subtype'] == mt\Task::SEASON_WEAKLY_MISSON_SUBTYPE) { $missionMeta['subtype'] == mt\Task::SEASON_WEAKLY_MISSON_SUBTYPE) {
$weeklyData = getXVal($seasonDb, 'weekly_data', array()); $weeklyData = getXVal($this->seasonDb, 'weekly_data', array());
$weekDb = getXVal($weeklyData, $missionMeta['week'], array()); $weekDb = getXVal($weeklyData, $missionMeta['week'], array());
$val = getXVal($weekDb, $key, 0); $val = getXVal($weekDb, $key, 0);
} else { } else {
$val = getXVal($seasonDb, $key, 0); $val = getXVal($this->seasonDb, $key, 0);
} }
} else { } else {
$val = getXVal($userInfo, $key, 0); $val = getXVal($this->userInfo, $key, 0);
} }
return $val; return $val;
} }