game2006api/webapp/controller/ChipPageController.class.php
2023-02-21 16:01:25 +08:00

162 lines
4.8 KiB
PHP

<?php
require_once('models/Chip.php');
require_once('models/ChipPage.php');
require_once('services/ChipPageService.php');
use models\Chip;
use models\ChipPage;
use services\ChipPageService;
use phpcommon\SqlHelper;
class ChipPageController extends BaseAuthedController
{
public function chipPageList(){
$list =array();
ChipPage::getList(function ($row) use(&$list){
array_push($list, ChipPage::toDto($row));
});
$this->_rspData(array(
'data' => $list,
));
}
public function showPageInfo(){
$obj = new services\ChipPageService();
$obj->initChipPage();
$page = getReqVal('page',1);
$chipPageDb = ChipPage::find($page);
if (!$chipPageDb){
$this->_rspErr(1,'page parameter error');
return ;
}
$chipPageDto = ChipPage::toDtoInfo($chipPageDb);
$this->_rspData(array(
'data' => $chipPageDto,
));
}
public function addChipPage(){
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());
// $data[$slotId-1]['chip_id'] = $uniqueId;
// print_r($data);die;
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 ($chipDb['inlay_state'] == 1){
$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::update2($data[$slotId-1]['chip_id'] ,
array(
'inlay_state' => 0,
)
);
}
$data[$slotId-1]['chip_id'] = $uniqueId;
Chip::update2($uniqueId ,
array(
'inlay_state' => 1,
)
);
ChipPage::update($page,array(
'data' => json_encode($data)
));
$newChipPageDb = ChipPage::find($page);
$chipPageDto = ChipPage::toDtoInfo($newChipPageDb);
$this->_rspData(array(
'data' => $chipPageDto,
));
}
public function removeChip(){
$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::update2($value['chip_id'] ,
array(
'inlay_state' => 0,
)
);
$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,
));
}
}