137 lines
4.2 KiB
PHP
137 lines
4.2 KiB
PHP
<?php
|
|
|
|
require_once('mt/Sign.php');
|
|
require_once('mt/Parameter.php');
|
|
|
|
require_once('models/SignLog.php');
|
|
|
|
require_once('services/AwardService.php');
|
|
require_once('services/PropertyChgService.php');
|
|
|
|
use phpcommon\SqlHelper;
|
|
use models\User;
|
|
use models\SignLog;
|
|
|
|
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,
|
|
// 'item_id' => $meta['item_id'],
|
|
// 'item_num' => $meta['num'],
|
|
'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 sign(){
|
|
// ...用户登录-login
|
|
|
|
//用户是否有签到记录
|
|
if (SignLog::isSignRecord()){
|
|
//有签到记录
|
|
$row = SignLog::find();
|
|
$paramMeta = \mt\Parameter::getByName('sign_daily_duration');
|
|
$end_time = myself()->_getDaySeconds($row['createtime']) + $paramMeta['param_value']*24*60*60;
|
|
//判断当前时间是否结束 并且 上次签到是否领取 并且 签到时间是否满足第二天签到
|
|
if (myself()->_getNowTime() < $end_time
|
|
&& $row['is_receive']
|
|
&& $row['sign_time'] < myself()->_getNowDaySeconds() + 6*60*60){
|
|
if($row['sign_time'] > myself()->_getNowDaySeconds()){
|
|
return;
|
|
}
|
|
$fieldKv = array(
|
|
'days' => function(){
|
|
return "days + 1";
|
|
},
|
|
'is_receive' => 0,
|
|
'sign_time' => myself()->_getNowTime(),
|
|
'modifytime' => myself()->_getNowTime()
|
|
);
|
|
SignLog::update($fieldKv);
|
|
}
|
|
|
|
}else{
|
|
//未有签到记录
|
|
SignLog::create();
|
|
}
|
|
|
|
}
|
|
|
|
public function receive(){
|
|
$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);
|
|
$awardService = new services\AwardService();
|
|
$propertyChgService = new services\PropertyChgService();
|
|
$this->_addItems($addItems, $awardService, $propertyChgService);
|
|
$fieldKv = array(
|
|
'is_receive' => 1,
|
|
'modifytime' => myself()->_getNowTime()
|
|
);
|
|
SignLog::update($fieldKv);
|
|
$this->_rspData(array(
|
|
'award' => $awardService->toDto(),
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
|
|
));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|