currSeasonMeta = \mt\BattlePass::getCurrentSeason(); if (!$this->currSeasonMeta) { $this->_rspErr(10, 'season server internal error'); die(); } $this->propertyChgService = new services\PropertyChgService(); $this->awardService = new services\AwardService(); $this->userInfo = $this->_getOrmUserInfo(); } public function getPassList(){ $row = Pass::find($this->currSeasonMeta['id']); if (!$row){ $this->_initPassList($this->currSeasonMeta['id']); $row = Pass::find($this->currSeasonMeta['id']); } $data = emptyReplace(json_decode($row['data'], true), array()); $this->_rspData(array( 'time_info' => array( 'name'=>strtotime($this->currSeasonMeta['battlepass_name']), 'sub_name'=>strtotime($this->currSeasonMeta['battlepass_sub_name']), 'begin_time'=>strtotime($this->currSeasonMeta['begin_time']), 'end_time'=>strtotime($this->currSeasonMeta['end_time']) ), 'reward_info' => $data, )); } public function commit(){ $level = getReqVal('level', 0); $type= getReqVal('type', 0); $passMeta = \mt\BattlePass::find($level); if (!$passMeta){ $this->_rspErr(1, 'param error or null'); return; } if ($this->userInfo['level'] < $level){ $this->_rspErr(1, 'objectives not achieved'); return; } $passDb = Pass::find($this->currSeasonMeta['id']); $rewards = emptyReplace(json_decode($passDb['data'], true), array()); $data = $this->_rewardHash($rewards); $items = array(); switch ($type){ case 0 : { if ($data['basic'][$level]['state'] != 0){ $this->_rspErr(1, "basic Can't get it again"); return; }else{ array_push($items,array( 'item_id'=>$passMeta['basic_item_id'], 'item_num'=>$passMeta['basic_item_num'], )); } } break; case 1 : { if ($this->userInfo['activated'] != 1){ $this->_rspErr(1, "don't is platinum pass "); return; } if ($data['platinum'][$level]['state'] != 0){ $this->_rspErr(1, "platinum Can't get it again"); return; }else{ array_push($items,array( 'item_id'=>$passMeta['platinum_item_id1'], 'item_num'=>$passMeta['platinum_item_num1'], )); array_push($items,array( 'item_id'=>$passMeta['platinum_item_id2'], 'item_num'=>$passMeta['platinum_item_num2'], )); } } break; default : { $this->_rspErr(1, "param type is error"); return; } } $this->_addItems($items,$this->awardService, $this->propertyChgService); switch ($type){ case 0 : { $data['basic'][$level]['state'] = 1; } break; case 1 : { $data['platinum'][$level]['state'] = 1; } } Pass::upsert($this->currSeasonMeta['id'],json_encode($data)); $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), )); } public function commitAll(){ $passDb = Pass::find($this->currSeasonMeta['id']); $rewards = emptyReplace(json_decode($passDb['data'], true), array()); foreach ($rewards['basic'] as &$reward){ if ($this->userInfo['level'] >= $reward['level'] && $reward['state']==0){ $passMeta = \mt\BattlePass::find($reward['level']); $items = array( array( 'item_id'=>$passMeta['basic_item_id'], 'item_num'=>$passMeta['basic_item_num'], ) ); $this->_addItems($items,$this->awardService, $this->propertyChgService); $reward['state'] = 1; } } if ($this->userInfo['activated']){ foreach ($rewards['platinum'] as &$reward){ if ($this->userInfo['level'] >= $reward['level'] && $reward['state']==0){ $passMeta = \mt\BattlePass::find($reward['level']); $items = array( array( 'item_id'=>$passMeta['platinum_item_id1'], 'item_num'=>$passMeta['platinum_item_num1'], ), array( 'item_id'=>$passMeta['platinum_item_id2'], 'item_num'=>$passMeta['platinum_item_num2'], ) ); $this->_addItems($items,$this->awardService, $this->propertyChgService); $reward['state'] = 1; } } } Pass::upsert($this->currSeasonMeta['id'],json_encode($rewards)); $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), )); } public function activePlatinumPass(){ } public function buyPassLevel(){ } public function resetPassLevel(){ } private function _rewardHash($reward){ if (!$reward){ return array(); } $data = array(); foreach ($reward['basic'] as $value){ $data['basic'][$value['level']] = $value; } foreach ($reward['platinum'] as $value){ $data['platinum'][$value['level']] = $value; } return $data; } private function _initPassList($season){ $passList = \mt\BattlePass::all(); if (!$passList){ return; } $data = array( 'basic' => array(), 'platinum' => array() ); foreach ($passList as $pass){ $basic_state = -1; $platinum_state = -1; if ($this->userInfo['level'] >= $pass['id']){ $basic_state = 0; if ($this->userInfo['activated']){ $platinum_state = 0; } } array_push($data['basic'],array( 'level' => $pass['id'], 'state' => $basic_state, // 'reward' => array( // 'item_id' => $pass['basic_item_id'], // 'item_num' => $pass['basic_item_num'], // ), )); array_push($data['platinum'],array( 'level' => $pass['id'], 'state' => $platinum_state, // 'reward' => array( // array( // 'item_id' => $pass['platinum_item_id1'], // 'item_num' => $pass['platinum_item_num1'], // ), // array( // 'item_id' => $pass['platinum_item_id2'], // 'item_num' => $pass['platinum_item_num2'], // ), // ) )); } Pass::upsert($season,json_encode($data)); } }