205 lines
6.2 KiB
PHP
205 lines
6.2 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(){
|
|
$obj = new services\ChipPageService();
|
|
$obj->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 ;
|
|
}
|
|
$chipPageDto = ChipPage::toDtoInfo($chipPageDb);
|
|
$this->_rspData(array(
|
|
'data' => $chipPageDto,
|
|
));
|
|
}
|
|
|
|
public function addChipPage(){
|
|
$userInfo = $this->_getOrmUserInfo();
|
|
$count = ChipPage::getCount();
|
|
switch ($count){
|
|
case 3 : {
|
|
if ($userInfo['level'] < \mt\LevelUp::USER_LEVEL_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){
|
|
$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,
|
|
));
|
|
}
|
|
|
|
|
|
} |