php实现签到功能

来源:互联网 发布:电信网络诈骗宣传标语 编辑:程序博客网 时间:2024/05/01 22:23

 控制器的写

$date=yii::$app->request->get('date');


        if(isset($date)){
            $user_id=1;
            $model=new SignIn();
            if(!$model->show($user_id,$date)){
                $dated=$date-3600*24;
                $yesterday=$model->show($user_id,$dated);
                $sign_num=!empty($yesterday)?$yesterday[0]['sign_num']:0;
                if($sign_num+1==5){
                    $data=['user_id'=>$user_id,'sign_date'=>intval($date),'sign'=>1];

                }else{
                    $data=['user_id'=>$user_id,'sign_date'=>intval($date),'sign'=>1,'sign_num'=>$sign_num+1];
                }
                    if($model->add($data)){
                        $model->sign_total($data['user_id']);
                        return "<script>alert('签到成功');location.href='".URl::to(['sign-in/sign'])."';</script>";
                    }

            }else{
                return "<script>alert('今天已签到');location.href='".URl::to(['sign-in/sign'])."'</script>";
            }


//            $data=['user_id'=>1,'sign_date'=>$date];
//
//            $model->sign($data);
        }else{
            return $this->render('sign');

        }


model层的一些写法

class SignIn extends \yii\db\ActiveRecord
{
    public function sign_total($userId){
        $sql='update user set sign_total=sign_total+10 WHERE id='.$userId;
        return Yii::$app->db->createCommand($sql)->query();
    }

    public function add($data){
        $value='';
        foreach($data as $val){
            $value.=",'$val'";
        }
        $k='';
        foreach($data as $key=>$val){
            $k.=",$key";
        }
        $value=substr($value,1);
        $k=substr($k,1);
    return    Yii::$app->db->createCommand("insert into sign_in($k) VALUES($value)")->query();

    }

    public function show($id,$dated){

    return    $rows = (new \yii\db\Query())->from('sign_in')
            ->where(['user_id' => $id])
            ->andWhere(['sign_date'=>$dated])
            ->all();
    }


0 0