From a067f08f623c08429f2d5e413a1ab44f6e11f101 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 14 Dec 2021 14:26:26 +0800 Subject: [PATCH] 1 --- webapp/services/BattleDataService.php | 56 ++++++++++++++++++++++++ webapp/services/MissionService.php | 62 ++++++++++++++++++++++++++- 2 files changed, 117 insertions(+), 1 deletion(-) diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 0364980..90e9de3 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -2,6 +2,62 @@ namespace services; +/* + 数据结构: + { + "total_battle_times": 0, + "total_single_battle_times": 0, + "total_team_battle_times": 0, + "single_battle_rank": 0, + "team_battle_rank": 0, + "total_win_times": 0, + "total_kills_times": 0, + "max_kills_times": 0, + "total_damage_out":0, + "max_damage_out": 0, + "total_damage_in": 0, + "total_recover_hp": 0, + "max_recover_hp": 0, + "total_alive_time": 0, + "max_alive_time": 0, + "rescue_teammate_times": 0, + "diving_times": 0, + "open_airdrop_times": 0, + "use_medicine_times": 0, + "destory_car_times": 0, + "use_camouflage_times": 0, + "use_skill_times": 0, + "ride_car_move_distance": 0, + "ride_car_kills": 0, + "to_teammate_like_times": 0, + "weapon_type_data": { + "${equip_type}_${equip_subtype}": + { + "kills": 1, + "damage_out": 1, + "obtain_count": 1, + } + }, + "weapon_slot_data": { + "${slot}": + { + "use_times": 1, + } + }, + "createtime": 0, + "modifytime": 0, + } + 涉及的表: + t_battle.data + t_season.data + { + "daily_data": {}, + "weekly_data": { + 1: {} + } + } + */ + class BattleDataService extends BaseService { } diff --git a/webapp/services/MissionService.php b/webapp/services/MissionService.php index 3b8f4b0..34ffe63 100644 --- a/webapp/services/MissionService.php +++ b/webapp/services/MissionService.php @@ -15,6 +15,10 @@ class MissionService extends BaseService { private $userInfo = null; private $seasonDb = null; + private $hisBattleData = array(); + private $seasonBattleData = array(); + private $weeklyBattleData = array(); + private $dailyBattleData = array(); public function init($userInfo, $seasonDb) { @@ -43,7 +47,7 @@ class MissionService extends BaseService { return $missionDto; } } - $handled = true; + $handled =true; switch ($missionMeta['condition']) { case mt\Task::DAILY_LOGIN_TIMES_COND: { @@ -378,27 +382,83 @@ class MissionService extends BaseService { return $val; } + private function internalGetBattleData($missionMeta) + { + $battleData = null; + if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) { + $battleData = $this->$this->dailyBattleData; + } 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) { + $battleData = getXVal($this->weeklyBattleData, $missionMeta['week'], array()); + } else { + $battleData = $this->seasonBattleData; + } + } else { + $battleData = $this->hisBattleData; + } + } + return $battleData ? $battleData : array(); + } + private function getWeaponDamageOut($missionMeta) { $val = 0; + $battleData = $this->internalGetBattleData($missionMeta); + $weaponData = getXVal($battleData, 'weapon_type_data', null); + if ($weaponData) { + $key = $missionMeta['param1'] . '_' . $missionMeta['param2']; + $data = getXVal($weaponData, $key, null); + if ($data) { + $val = getXVal($data, 'damage_out', 0); + } + } return $val; } private function getWeaponKills($missionMeta) { $val = 0; + $battleData = $this->internalGetBattleData($missionMeta); + $weaponData = getXVal($battleData, 'weapon_type_data', null); + if ($weaponData) { + $key = $missionMeta['param1'] . '_' . $missionMeta['param2']; + $data = getXVal($weaponData, $key, null); + if ($data) { + $val = getXVal($data, 'kills', 0); + } + } return $val; } private function getWeaponSlotUseTimes($missionMeta) { $val = 0; + $battleData = $this->internalGetBattleData($missionMeta); + $weaponData = getXVal($battleData, 'weapon_slot_data', null); + if ($weaponData) { + $key = $missionMeta['param1']; + $data = getXVal($weaponData, $key, null); + if ($data) { + $val = getXVal($data, 'use_times', 0); + } + } return $val; } private function getEquipObtainCount($missionMeta) { $val = 0; + $battleData = $this->internalGetBattleData($missionMeta); + $weaponData = getXVal($battleData, 'weapon_type_data', null); + if ($weaponData) { + $key = $missionMeta['param1'] . '_' . $missionMeta['param2']; + $data = getXVal($weaponData, $key, null); + if ($data) { + $val = getXVal($data, 'obtain_count', 0); + } + } return $val; }