Thinkphp5小程序连续签到加积分功能实现

 public function qiandao()
        {
            $today = date('ymd');//获取当前年月日
            $hou = strtotime($today);
            $openid = $this->request->get();//接收小程序端的用户openid
            $id = implode(',',$openid);//数组转换
            $yt = Db::name('qiandao')->where('openid',$id)->field('time,tian')->order('time','desc')->limit('1')->select(); //取出用户签到的数据
            $yt1 = array_column($yt,'tian');
            $yt2 = implode(',',$yt1);
            $ts = Db::name('qiandao')->where('openid',$id)->count(); //取出用户签到的天数
            $result = array_column($yt,'time');//数组转换
            $nn =implode(",",$result);
            $sj = strtotime($nn);
            $jj = $sj-86400;
            $q = Db::name('qiandao')->where('openid',$id)->field('tian')->order('time','desc')->limit('1')->select();
            $w = array_column($q,'tian');
            $e = implode(',',$w);
            $t = Db::name('jifengz')->where('gz',0)->field('jifen')->select();//取出平时签到的积分
            $t1 = array_column($t,'jifen');
            $t2 = implode(',',$t1);
            $y = Db::name('jifengz')->where('gz',1)->field('jifen')->select();//取出第五天签到额外加的积分
            $y1 =  array_column($y,'jifen');
            $y2 = implode(',',$y1);
            $u = Db::name('jifengz')->where('gz',2)->field('jifen')->select();//取出第十天签到额外加的积分
            $u1 =  array_column($u,'jifen');
            $u2 = implode(',',$u1);
            if ($jj != $hou){
                Db::name('li_user')->where('openid',$id)->setInc('integral',3);
                Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=> 1]);
                $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                $hj = [$yui,$jkl];
                return json_encode($hj);
            }
            //第一次签到
            if (empty($yt)){
                Db::name('li_user')->where('openid',$id)->setInc('integral',3);
                Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=> 1]);
                $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                $hj = [$yui,$jkl];
                return json_encode($hj);
            }
            //连续签到
            if (!empty($yt)){
                if ($e < 10){
                    if ($nn + 1 == $today){
                        if ($ts >= 1 & $ts < 4){
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$t2);
                            Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=> $e + 1]);
                            $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                            $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                            $hj = [$yui,$jkl];
                            return json_encode($hj);
                        }else if ($ts == 4){
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$t2);
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$y2);
                            Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=>$e + 1]);
                            $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                            $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                            $hj = [$yui,$jkl];
                            return json_encode($hj);
                        }else if ($ts > 5 & $ts < 9){
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$t2);
                            Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=>$e + 1]);
                            $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                            $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                            $hj = [$yui,$jkl];
                            return json_encode($hj);
                        }else if ($ts == 9){
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$t2);
                            Db::name('li_user')->where('openid',$id)->setInc('integral',$u2);
                            Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=>$ts + 1]);
                            $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                            $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                            $hj = [$yui,$jkl];
                            return json_encode($hj);
                        }
                    }else if ($nn == $today){
                        $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                        $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                        $hj = [$yui,$jkl];
                        return json_encode($hj);
                    }
                    //签到十天之后的下一次签到次数重新计算
                }else if ($e == 10){
                    Db::name('li_user')->where('openid',$id)->setInc('integral',$t2);
                    Db::name('qiandao')->insert(['openid'=>$id,'time' => $today,'tian'=> 1]);
                    $yui = Db::name('li_user')->where('openid',$id)->field('integral')->select();
                    $jkl = Db::name('qiandao')->where('openid',$id)->field('tian')->order('id','desc')->limit('1')->select();
                    $hj = [$yui,$jkl];
                    return json_encode($hj);
                }
            }
            $ts1 = Db::name('qiandao')->where('id',$id)->count(); //取出用户签到的天数
            $shuzu = [$ts1,$ts1];//合成数组
            return json_encode($shuzu);//返回json
        }

在这里插入图片描述
用户连续签到10天加积分的,仅做参考!
憋了一下午憋出来这一点,第一次写这个功能,勉强能运行,希望大佬们批评指正.
今天修改根据时间戳判断是否是连续签到,上次的是根据日期判断,如果是一号的话减一就是0了,有bug.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值