game2006api/webapp/controller/FirstTopupController.class.php
hujiabin 7d02ff175d 1
2024-08-01 19:18:47 +08:00

116 lines
3.4 KiB
PHP

<?php
require_once('mt/FirstTopup.php');
require_once("models/FirstTopup.php");
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
use phpcommon\SqlHelper;
use models\FirstTopup;
use services\AwardService;
use services\PropertyChgService;
class FirstTopupController extends BaseAuthedController {
public function _handlePre()
{
parent::_handlePre();
die;
}
public function info()
{
$dbInfo = FirstTopup::get();
$status = array(0, 0, 0);
if (!$dbInfo) {
$this->_rspData(array(
'complete' => 0,
'firstTopupList' => mt\FirstTopup::getGroups(),
'status' => $status,
)
);
return;
}
FirstTopup::adjustStatus($dbInfo);
$complete = 1;
$this->fillStatus($dbInfo, $status, $complete);
$this->_rspData(
array(
'complete' => $complete,
'firstTopupList' => mt\FirstTopup::getGroups(),
'status' => $status,
)
);
}
public function get()
{
$group = getReqVal('group', 1);
if ($group < 1 || $group > 3) {
$this->_rspErr(1, "not yet to receive the reward, group: $group");
return;
}
$dbInfo = FirstTopup::get();
if (!$dbInfo) {
$this->_rspErr(1, "not yet to receive the reward, group: $group");
return;
}
FirstTopup::adjustStatus($dbInfo);
if ($dbInfo['status' . $group] == 2) {
$this->_rspErr(2, "already received the reward, group: $group");
return;
}
if ($dbInfo['status' . $group] != 1) {
$this->_rspErr(1, "not yet to receive the reward, group: $group");
return;
}
FirstTopup::update(array(
'status' . $group => 2
));
$dbInfo['status' . $group] = 2;
// 发放奖励
$awardService = new services\AwardService();
$propertyChgService = new services\PropertyChgService();
$reward = mt\FirstTopup::getByGroup($group);
$awardItems = array();
for ($i = 0; $i < count($reward); $i++) {
array_push($awardItems,
array(
'item_id' => $reward[$i]['goods_id'],
'item_num' => $reward[$i]['goods_num'],
'is_payed' => 1
));
}
myself()->_addItems($awardItems, $awardService, $propertyChgService);
$status = array(0, 0, 0);
$complete = 1;
$this->fillStatus($dbInfo, $status, $complete);
myself()->_rspData(
array(
'group' => $group,
'status' => $status,
'award' => $awardService->toDto(),
'property_chg' => $propertyChgService->toDto(),
)
);
}
private function fillStatus($dbInfo, &$status, &$complete)
{
$complete = 1;
for ($i = 1; $i <= 3; ++$i) {
if ($dbInfo['status' . $i] != 2) {
$complete = 0;
}
$status[$i - 1] = $dbInfo['status' . $i];
}
if ($complete == 1 && myself()->_getV(TN_FIRST_TUPOP_STATUS, 0) == 0) {
myself()->_setV(TN_FIRST_TUPOP_STATUS, 0, 1);
}
}
}