完善7日签到

This commit is contained in:
hujiabin 2023-06-06 19:47:13 +08:00
parent 3020c9c5b4
commit 3617774689
3 changed files with 54 additions and 40 deletions

View File

@ -34,8 +34,6 @@ class SignController extends BaseAuthedController
'days' => $day, 'days' => $day,
'condition' => $meta['condition'], 'condition' => $meta['condition'],
'is_receive' => $state, 'is_receive' => $state,
// 'item_id' => $meta['item_id'],
// 'item_num' => $meta['num'],
'award' => $award 'award' => $award
)); ));
} }
@ -51,42 +49,6 @@ class SignController extends BaseAuthedController
)); ));
} }
//首次登录 签到活动开始
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(){ public function receive(){
$sign_id = getReqVal('sign_id', ''); $sign_id = getReqVal('sign_id', '');
$meta = \mt\Sign::get($sign_id); $meta = \mt\Sign::get($sign_id);

View File

@ -8,6 +8,7 @@ require_once('models/Gun.php');
require_once('models/UserSeasonRing.php'); require_once('models/UserSeasonRing.php');
require_once('models/Chip.php'); require_once('models/Chip.php');
require_once('models/Battle.php'); require_once('models/Battle.php');
require_once('models/SignLog.php');
require_once('mt/Parameter.php'); require_once('mt/Parameter.php');
require_once('mt/Drop.php'); require_once('mt/Drop.php');
@ -34,6 +35,7 @@ use models\Nft;
use models\Chip; use models\Chip;
use models\UserSeasonRing; use models\UserSeasonRing;
use models\Battle; use models\Battle;
use models\SignLog;
class UserController extends BaseAuthedController { class UserController extends BaseAuthedController {
private $init_rank = 'rank_init_rank'; private $init_rank = 'rank_init_rank';
@ -72,7 +74,8 @@ class UserController extends BaseAuthedController {
)); ));
$userInfo['address'] = $this->_getOpenId(); $userInfo['address'] = $this->_getOpenId();
} }
$this->updateLastSeason($userInfo); $this->_updateLastSeason($userInfo);
$this->_sign();
$this->_rspData(array( $this->_rspData(array(
'info' => User::show($userInfo), 'info' => User::show($userInfo),
)); ));
@ -874,7 +877,7 @@ class UserController extends BaseAuthedController {
); );
} }
private function updateLastSeason($userInfo){ private function _updateLastSeason($userInfo){
if (! $userInfo['last_season_id']){ if (! $userInfo['last_season_id']){
$currSeasonMeta = mt\RankSeason::getCurrentSeason(); $currSeasonMeta = mt\RankSeason::getCurrentSeason();
if ($currSeasonMeta){ if ($currSeasonMeta){
@ -885,4 +888,35 @@ class UserController extends BaseAuthedController {
} }
} }
private function _sign(){
//用户是否有签到记录
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();
}
}
} }

View File

@ -9,6 +9,7 @@ require_once('models/UserSeasonRing.php');
require_once('models/Parachute.php'); require_once('models/Parachute.php');
require_once('models/Hero.php'); require_once('models/Hero.php');
require_once('models/HeroPreset.php'); require_once('models/HeroPreset.php');
require_once('models/SignLog.php');
use mt; use mt;
use phpcommon; use phpcommon;
@ -99,6 +100,7 @@ class User extends BaseModel {
'ring_list' => UserSeasonRing::ringList($row['account_id']), 'ring_list' => UserSeasonRing::ringList($row['account_id']),
'current_star_num' => $current_star_num, 'current_star_num' => $current_star_num,
'next_star_num' => $next_star_num, 'next_star_num' => $next_star_num,
'status_bar' => self::_getState()
); );
} }
@ -160,6 +162,22 @@ class User extends BaseModel {
'parachute_list' => Parachute::getMyParachute(), 'parachute_list' => Parachute::getMyParachute(),
'current_star_num' => $current_star_num, 'current_star_num' => $current_star_num,
'next_star_num' => $next_star_num, 'next_star_num' => $next_star_num,
'status_bar' => self::_getState()
);
}
private static function _getState(){
$sign_state = 0;
$signDb = SignLog::find();
$paramMeta = \mt\Parameter::getByName('sign_daily_duration');
$end_time = myself()->_getDaySeconds($signDb['createtime'])+$paramMeta['param_value']*24*60*60;
if ( myself()->_getNowTime() - $end_time > 0){
$sign_state = 1;
}
return array(
"first_top_up" => myself()->_getV(TN_FIRST_TUPOP_STATUS,0),
"sign_day" => $sign_state
); );
} }