239 lines
8.2 KiB
PHP
239 lines
8.2 KiB
PHP
<?php
|
|
require_once('services/AwardService.php');
|
|
require_once('services/PropertyChgService.php');
|
|
|
|
require_once('mt/BattlePass.php');
|
|
require_once('mt/StarLevel.php');
|
|
|
|
require_once('models/Pass.php');
|
|
require_once('models/RealtimeData.php');
|
|
use phpcommon\SqlHelper;
|
|
use models\Pass;
|
|
use models\RealtimeData;
|
|
class PassController extends BaseAuthedController {
|
|
|
|
private $awardService = null;
|
|
private $propertyChgService = null;
|
|
private $userInfo = null;
|
|
private $currSeasonMeta = null;
|
|
public function _handlePre()
|
|
{
|
|
// if(getReqVal('a', '') != 'resetStar'){
|
|
parent::_handlePre();
|
|
// }
|
|
|
|
$this->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));
|
|
}
|
|
|
|
} |