game2006api/webapp/controller/ActivityController.class.php
2023-12-21 17:02:53 +08:00

103 lines
3.5 KiB
PHP

<?php
require_once('models/ExchangeCode.php');
require_once('models/Map.php');
require_once('mt/Item.php');
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
use models\ExchangeCode;
use models\Map;
class ActivityController extends BaseAuthedController {
public function exchangeCode(){
$code = trim(getReqVal('code', 0));
$result = ExchangeCode::find($code);
if (!$result){
myself()->_rspErr(1, 'invalid code');
return;
}
if ($result['begindate'] > myself()->_getNowTime() || $result['enddate'] < myself()->_getNowTime()){
myself()->_rspErr(1, 'invalid code');
return;
}
switch ($result['codetype']){
//一对一(一码只能兑换一次,并且该类道具一人也只能兑换一次)
case 1 :{
$recordDb = ExchangeCode::getRecordByCode($code);
if ($recordDb){
myself()->_rspErr(1, 'been used code');
return;
}
$recordDb2 = ExchangeCode::findRecordByPackage($result['packageno']);
if ($recordDb2){
myself()->_rspErr(1, 'In exchange for rewards');
return;
}
}
break;
//一对多(一码可被多人使用,仅一人一次,并且该类道具一人也只能兑换一次)
case 2 :{
$recordDb = ExchangeCode::findRecordByCode($code);
if ($recordDb){
myself()->_rspErr(1, 'been used code');
return;
}
$recordDb2 = ExchangeCode::findRecordByPackage($result['packageno']);
if ($recordDb2){
myself()->_rspErr(1, 'In exchange for rewards');
return;
}
}
break;
//多对一
case 3:{
$recordDb = ExchangeCode::getRecordByCode($code);
if ($recordDb){
myself()->_rspErr(1, 'been used code');
return;
}
}
break;
default :{
myself()->_rspErr(1, 'invalid');
return;
}
}
$itemMt = \mt\Item::get($result['packageno']);
if (!$itemMt){
myself()->_rspErr(1, "Props that don't exist");
return;
}
$items = array(
array(
'item_id' => $itemMt['id'],
'item_num' => 1
)
);
$propertyChgService = new services\PropertyChgService();
$awardService = new services\AwardService();
$this->_addItems($items, $awardService, $propertyChgService);
$fieldKv = array(
'account_id' => myself()->_getAccountId(),
'exchangecode' => $code,
'packageno' => $itemMt['id'],
'codetype' => $result['codetype'],
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
);
ExchangeCode::insetRecord($fieldKv);
ExchangeCode::updateExchangeCode($code);
$this->_rspOk();
}
public function getMap(){
$mapDb = Map::findMap();
$this->_rspData(array("data"=>$mapDb));
}
}