game2006api/webapp/controller/SignController.class.php
2024-08-01 16:21:54 +08:00

115 lines
3.3 KiB
PHP

<?php
require_once('mt/Sign.php');
require_once('mt/Parameter.php');
require_once('models/SignLog.php');
require_once('services/LogService.php');
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
use phpcommon\SqlHelper;
use models\User;
use models\SignLog;
use services\LogService;
class SignController extends BaseAuthedController
{
public function getSignList(){
$metaList = \mt\Sign::getListByDay();
$data = array();
$row = SignLog::find();
$day = $row ? $row['days'] : 0;
foreach ($metaList as $meta){
if ($day > $meta['condition']){
$state = 1;
}elseif ($day == $meta['condition']){
$state = $row['is_receive'];
}else{
$state = -1;
}
$award = \mt\Sign::getAward($meta);
array_push($data,array(
'sign_id' => $meta['sign_id'],
'days' => $day,
'condition' => $meta['condition'],
'is_receive' => $state,
'award' => $award
));
}
$paramMeta = \mt\Parameter::getByName('sign_daily_duration');
$start_time = myself()->_getDaySeconds($row['createtime']);
$end_time = myself()->_getDaySeconds($row['createtime'])+$paramMeta['param_value']*24*60*60;
$this->_rspData(array(
'data' => $data,
'time' => array(
'start_time' =>$start_time,
'end_time' =>$end_time
)
));
}
public function receiveS(){
$sign_id = getReqVal('sign_id', '');
$meta = \mt\Sign::get($sign_id);
if (!$meta){
$this->_rspErr(1, 'sign_id param error');
return;
}
$row = SignLog::find();
if (!$row || $row['days'] != $meta['condition']){
$this->_rspErr(1, 'Condition not met');
return;
}
if ($row['is_receive']){
$this->_rspErr(1, 'Have received');
return;
}
$paramMeta = \mt\Parameter::getByName('sign_daily_duration');
$end_time = myself()->_getDaySeconds($row['createtime'])+$paramMeta['param_value']*24*60*60;
if (myself()->_getNowTime() > $end_time){
$this->_rspErr(1, 'End of activity time');
return;
}
$addItems = \mt\Sign::getAward($meta);
$gold = 0;
foreach ($addItems as $item){
if ($item['item_id'] == V_ITEM_GOLD){
$gold += $item['item_num'];
}
}
$awardService = new services\AwardService();
$propertyChgService = new services\PropertyChgService();
$this->_addItems($addItems, $awardService, $propertyChgService);
if ($gold > 0){
//埋点
$event = [
'name' => LogService::SIGN_AWARD,
'val' => $gold
];
LogService::productGold($event);
}
$fieldKv = array(
'is_receive' => 1,
'modifytime' => myself()->_getNowTime()
);
SignLog::update($fieldKv);
$this->_rspData(array(
'award' => $awardService->toDto(),
'property_chg' => $propertyChgService->toDto(),
));
}
}