php实现签到功能

 控制器的写

$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();
    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值