欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

如何改这段thinkphp签到代码

程序员文章站 2022-03-24 17:03:11
...
        $residueHour=24+24-date('H',$lastSignDay);
        $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00');
        $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);

回复内容:

        $residueHour=24+24-date('H',$lastSignDay);
        $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00');
        $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);

public function sign(){
    //每日签到       
    $this->check_login();
    $data=array(
            'userId'=>$this->memberID,
            'sc_score'=>1,
            'sc_detail'=>'签到+1',
            'sc_type'=>1
    );
    
    $dao=M('sign');//实例化sign对象
    $current=date('Y-m-d H:i:s',time());
    $hasSign=$dao->where("userId={$this->memberID}")->find();
    $count=$hasSign['si_count'];
    if($hasSign){
        $lastSignDay=strtotime("{$hasSign['si_time']}");
        $lastSign=date('Y-m-d',$lastSignDay);
        $today=date('Y-m-d',time());
         if($lastSign==$today){
            echo "今天已签到,您已连续签到  {$count}  天,连续签到5天每天+5元代金券!";
            exit();
        } 
            
        $residueHour=24+24-date('H',$lastSignDay); //有效的签到时间  (签到当天剩余的小时+1天的时间)
        $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00');//签到当天 2014-12-07 18:00:00
        $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);//在2014-12-07 18:00:00 基础上+ 有效的签到时间
        if(time()>$lastSignDate){ //当前时间 >  上一次签到时间
            $count=1;  
        }else{
            $count=$count+1;
        }
        $sign=$dao->where("userId={$this->memberID}")->save(array('si_time'=>$current,'si_count'=>$count)); //签到表
    }else{
        $sign=$dao->add(array('userId'=>$this->memberID,'si_count'=>1)); //签到表
        $count=1;
    }
    if($sign){
        //第一天签到+1 第二天签到+2 第三天签到+3 第四天签到+4 第五天+5 连续5天每天+5
        switch ($count){
            case 1:
              $sc_score=1;
              break;
            case 2:
              $sc_score=2;
              break;
            case 3:
              $sc_score=3;
              break;
            case 4:
              $sc_score=4;
              break;
            default:
              $sc_score=5;
            }
            $dao->where("userId={$this->memberID}")->setInc('coin',$sc_score);  //签到金额累加
            $coin=$dao->where("userId={$this->memberID}")->field('coin')->find();
            if($coin['coin']>=20){
                $dao->where("userId={$this->memberID}")->setDec('coin',20);//如果满20将生成一张20的代金券
                $this->insertCoupon('会员签到代金券',20,$this->memberID);
            }
            $data=array(
            'userId'=>$this->memberID,    
            'sc_score'=>$sc_score,    
            'sc_detail'=>'签到+'.$sc_score,    
            'sc_type'=>1    
            );
        
        M('score2')->add($data); //积分表
                    
        if($count>0){
            echo "您今天已成功签到,成功领取{$sc_score}元代金券,其中连续签到  {$count} ";
        }else{
            echo "签到成功";
        }
    
    }else{
        echo '签到失败,请稍后重试!';
    }
    
}
相关标签: php thinkphp