initChipPage(); $list =array(); ChipPage::getList(function ($row) use(&$list){ array_push($list, ChipPage::toDto($row)); }); $this->_rspData(array( 'data' => $list, )); } public function showPageInfo(){ $page = getReqVal('page',1); $chipPageDb = ChipPage::find($page); if (!$chipPageDb){ $this->_rspErr(1,'page parameter error'); return ; } $obj = new services\ChipPageService(); $obj->refreshSlotState($chipPageDb); $chipPageDb = ChipPage::find($page); $chipPageDto = ChipPage::toDtoInfo($chipPageDb); $this->_rspData(array( 'data' => $chipPageDto, )); } public function setChipPage(){ $page = getReqVal('page',1); $chipPageDb = ChipPage::find($page); if (!$chipPageDb){ $this->_rspErr(1,'page parameter error'); return ; } $userDb = $this->_getOrmUserInfo(); $hero_uid = $userDb['hero_id']; $preset = HeroPreset::getHeroPreset($hero_uid); HeroPreset::upsertPreset($hero_uid,$preset['skill_id'],$page,0,0); $this->_rspOk(); } public function addChipPage(){ $userInfo = $this->_getOrmUserInfo(); $count = ChipPage::getCount(); switch ($count){ case 3 : { // if ($userInfo['level'] < \mt\LevelUp::USER_LEVEL_CHIP_PAGE1_MATCH_LIMIT){ if ($userInfo['star_num'] < \mt\StarLevel::STAR_NUM_CHIP_PAGE1_MATCH_LIMIT){ $this->_rspErr(1,'Not agreed terms'); return ; } } break; case 4 : { // if ($userInfo['level'] < \mt\LevelUp::USER_LEVEL_CHIP_PAGE2_MATCH_LIMIT){ if ($userInfo['star_num'] < \mt\StarLevel::STAR_NUM_CHIP_PAGE2_MATCH_LIMIT){ $this->_rspErr(1,'Not agreed terms'); return ; } }; break; case 5 : { $this->_rspErr(1,'Maximum'); return ; } } ChipPage::addChipPage(); $this->_rspOk(); } public function rename(){ $page = getReqVal('page',0); $chipPageDb = ChipPage::find($page); if (! $chipPageDb ){ $this->_rspErr(1,'page parameter error'); return ; } $name = getReqVal('name',''); if (mb_strlen($name) < 3) { $this->_rspErr(1,'Parameter error name length must not be less than 3'); return; } if (mb_strlen($name, 'utf8') > 12) { $this->_rspErr(1,'Parameter error name length must not be greater than 12'); return; } ChipPage::update($page,array( 'page_name' => $name )); $chipPageDto = ChipPage::toDtoInfo($chipPageDb); $this->_rspData(array( 'data' => $chipPageDto, )); } public function useChip(){ $page = getReqVal('page',0); $slotId = getReqVal('slot_id',0); $uniqueId = getReqVal('unique_id',0); if (!$page || !$slotId || !$uniqueId){ $this->_rspErr(1, 'Missing parameter'); return ; } $chipPageDb = ChipPage::find($page); if (!$chipPageDb){ $this->_rspErr(1,'page parameter error'); return ; } if ($slotId > ChipPageService::MAX_CHIP_SLOT_NUM || $slotId < 0 ){ $this->_rspErr(1,'No card slot exists'); return ; } $data = emptyReplace(json_decode($chipPageDb['data'], true), array()); if ( $data[$slotId-1]['state'] != 1){ $this->_rspErr(1,'Unlocked state'); return ; } $chipDb = Chip::find($uniqueId); if (! $chipDb){ $this->_rspErr(1, "You don't have the chip yet"); return; } if (in_array($page,array_filter(explode("|",$chipDb['inlay_state'])))){ $this->_rspErr(1, "The used chip"); return; } switch ($slotId%3){ case 1 : $type = 1;break; case 2 : $type = 2;break; case 0 : $type = 3;break; default:$type = 0; } if ($chipDb['chip_type'] != $type){ $this->_rspErr(1, "Type mismatch"); return; } if ( $data[$slotId-1]['chip_id'] ){ Chip::updateInlayState($data[$slotId-1]['chip_id'],$page); } $data[$slotId-1]['chip_id'] = $uniqueId; Chip::updateInlayState($uniqueId,$page); ChipPage::update($page,array( 'data' => json_encode($data) )); $newChipPageDb = ChipPage::find($page); $chipPageDto = ChipPage::toDtoInfo($newChipPageDb); $this->_rspData(array( 'data' => $chipPageDto, )); } public function removeChipOne(){ $page = getReqVal('page',0); $slotId = getReqVal('slot_id',0); if (!$page || !$slotId){ $this->_rspErr(1, 'Missing parameter'); return ; } $chipPageDb = ChipPage::find($page); if (!$chipPageDb){ $this->_rspErr(1,'page parameter error'); return ; } $data = emptyReplace(json_decode($chipPageDb['data'], true), array()); foreach ($data as &$value){ if ($value['slot_id'] == $slotId){ Chip::updateInlayState($value['chip_id'],$page); $value['chip_id'] = 0; } } ChipPage::update($page,array( 'data' => json_encode($data) )); $newChipPageDb = ChipPage::find($page); $chipPageDto = ChipPage::toDtoInfo($newChipPageDb); $this->_rspData(array( 'data' => $chipPageDto, )); } public function removeChipAll(){ $page = getReqVal('page',0); $chipPageDb = ChipPage::find($page); if (!$chipPageDb){ $this->_rspErr(1,'page parameter error'); return ; } $data = emptyReplace(json_decode($chipPageDb['data'], true), array()); foreach ($data as &$value){ if ($value['chip_id']){ Chip::updateInlayState($value['chip_id'],$page); $value['chip_id'] = 0; } } ChipPage::update($page,array( 'data' => json_encode($data) )); $newChipPageDb = ChipPage::find($page); $chipPageDto = ChipPage::toDtoInfo($newChipPageDb); $this->_rspData(array( 'data' => $chipPageDto, )); } }