115 lines
3.3 KiB
PHP
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(),
|
|
|
|
));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|