签到功能

签到原理 :  记录一个人签到的总次数, 连续次数

表设计: 一个字段为 最后签到日期 “YYYY-MM-DD”,  一个字段为连续签到次数

/*签到时,判断uid上一次签到的日期是否和当前日期的昨天一致,
          1、如果uid上一次签到为空,则连续签到由0更新为1
          2、如果相同,则连续签到++1
          3、如果不同,则连续签到更新为1
          4、为了兼容之前数据,在判断时重新组合年月日。 随后的插入操作都有last_signdate日期,可以用它直接判断
        */
        //昨天日期
        $yesterday = date("Y-m-d",strtotime("-1 day"));
 
        $uid = get_mid();
        $result = M('user_sign')->where("uid= ".$uid)->order('id desc')->limit("0,1")->select();
        if($result){
            if(strlen($result[0]['month'])==1){
                $month = '0'.$result[0]['month'];
            }else{
                $month = $result[0]['month'];
            }
            if(strlen($result[0]['date_time'])==1){
                $date = '0'.$result[0]['date_time'];
            }else{
                $date = $result[0]['date_time'];
            }
            
            $sign_yesterday=$result[0]['year'].'-'.$month.'-'.$date;
 
            if((int)$result[0]['continuity_count']==30){
                $continuity_count = 1;
            }elseif($yesterday==$sign_yesterday){
                $continuity_count=(int)$result[0]['continuity_count']+1;
            }else{
                $continuity_count = 1;
            }
            
        }else{
            $continuity_count = 1; //连续签到次数 
        }
 
        //var_dump($yesterday==$sign_yesterday);
        
        // var_dump(M('user_sign')->getlastsql());
        // var_dump($result);
        
 
        //var_dump($yesterday);
        //die();
 
        $data=$map;
        $data['month']=intval(date('m'));
        $data['date_time']=date('d');
        $data['year']=date('Y');
 
 
        if(strlen(date('m'))==1){
            $m = '0'.date('m');
        }else{
            $m = date('m');
        }
        if(strlen(date('d'))==1){
            $d = '0'.date('d');
        }else{
            $d = date('d');
        }
            
        $last_signdate=date('Y').'-'.$m.'-'.$d;
        $data['last_signdate']=$last_signdate;
        $data['continuity_count']=$continuity_count;
 
 
 
 
        $info=M('user_sign')->data($data)->add();
 

猜你喜欢

转载自blog.csdn.net/fjz_lihuapiaoxiang/article/details/81458839