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.