完善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,
'condition' => $meta['condition'],
'is_receive' => $state,
// 'item_id' => $meta['item_id'],
// 'item_num' => $meta['num'],
'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(){
$sign_id = getReqVal('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/Chip.php');
require_once('models/Battle.php');
require_once('models/SignLog.php');
require_once('mt/Parameter.php');
require_once('mt/Drop.php');
@ -34,6 +35,7 @@ use models\Nft;
use models\Chip;
use models\UserSeasonRing;
use models\Battle;
use models\SignLog;
class UserController extends BaseAuthedController {
private $init_rank = 'rank_init_rank';
@ -72,7 +74,8 @@ class UserController extends BaseAuthedController {
));
$userInfo['address'] = $this->_getOpenId();
}
$this->updateLastSeason($userInfo);
$this->_updateLastSeason($userInfo);
$this->_sign();
$this->_rspData(array(
'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']){
$currSeasonMeta = mt\RankSeason::getCurrentSeason();
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/Hero.php');
require_once('models/HeroPreset.php');
require_once('models/SignLog.php');
use mt;
use phpcommon;
@ -99,6 +100,7 @@ class User extends BaseModel {
'ring_list' => UserSeasonRing::ringList($row['account_id']),
'current_star_num' => $current_star_num,
'next_star_num' => $next_star_num,
'status_bar' => self::_getState()
);
}
@ -160,6 +162,22 @@ class User extends BaseModel {
'parachute_list' => Parachute::getMyParachute(),
'current_star_num' => $current_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
);
}