//签到 0(签到失败)1(签到成功)2(断签)3已签到
public function sign($id){
$connect=\Yii::$app->db;
$arr_sign = $connect->createCommand("SELECT * FROM user where user_id=$id")->queryOne();
//当天凌晨0点
$timeToday = mktime(\'0\',\'0\',\'0\',date(\'m\'),date(\'d\'),date(\'y\'));
//当前时间
$time=time();
//当前时间差
$diff=$time-$timeToday;
//上一次签到与凌晨时间差
$lastdiff=$arr_sign[\'lasttime\']-$timeToday;
//当前时间与上一次签到时间差
$newdiff=$time-$arr_sign[\'lasttime\'];
// print_r(date(\'Y-m-d H:i:s\',$timeToday));die;
// print_r($lastdiff);die;
//签到+1
$sign=$arr_sign[\'user_sign\']+1;
//未签过到进行第一次签到
if($arr_sign[\'user_sign\']==0){
$sql=" update user SET user_sign=$sign, lasttime=$time where user_id=$id ";
$arr=$connect->createCommand($sql)->execute();
return 1;
}else{
//判断是否连续签到或断签
if($lastdiff<=0 && $lastdiff>-86400){
$sql=" update user SET user_sign=$sign, lasttime=$time where user_id=$id ";
$arr=$connect->createCommand($sql)->execute();
return 1;
}elseif($lastdiff>0){
//已签到
return 3;
}elseif($lastdiff<-86400){
//断签
$sql=" update user SET user_sign=1, lasttime=$time where user_id=$id ";
$arr=$connect->createCommand($sql)->execute();
return 2;
}else{
return 0;
}
}
相关文章: