php 签到功能的实现

        $id=input('id');
//获取需要签到的id
        $now=time();
        //或许现在的时间戳
        $time=strtotime(date('Y-m-d'));
        //获取今天0点的时间戳
        $sign=\app\admin\model\Homesign::get($id);
        //查询这个用户的签到记录
        $user=\app\admin\model\Homeuser::get($id);
        //查询这个用户的用户信息
        //用户表和签到表id相同,分表是为了更好的查询数据
        if(isset($sign)){
        //查询签到表中有没有这条数据
        //如果没有则添加一条数据
            $last_time=$time-86400;
        //获取昨天的时间戳
            if($sign['sign_time']>$time){
        //如果签到时间大于今天的时间戳,提示用户今天已经签到了
                return json(['code'=>2,'data'=>'','msg'=>'今天已经签到过了']);
            }
            if($sign['sign_time']<$time && $sign['sign_time']>$last_time){
            //判断用户的签到时间小于今天的时间戳,大于昨天的时间戳表示连续签到
                $arr['day']=$sign['day']+1;
                //签到的天数在原来的基础上增加
                $arr['bonus']=$sign['bonus']+10;
                //签到的金币数在原来的基础上增加
                $arr['sign_time']=$now;
                //更新时间戳
                $res=\app\admin\model\Homesign::where('id',$sign['id'])->update($arr);
                //对数据进行修改
                if($res){
                    \app\admin\model\Homeuser::where('id',$id)->update(['inte'=>$user['inte']+$sign['bonus']+10]);
                    return json(['code'=>1,'data'=>'','msg'=>'连续签到成功']);
                }
            }
            if($sign['sign_time']<$last_time){
            //  用户签到的时间戳小于昨天0点的时间戳
                $arr['day']=1;
                $arr['bonus']=10;
                $arr['sign_time']=$now;
                $res=\app\admin\model\Homesign::where('id',$sign['id'])->update($arr);
                if($res){
                                           \app\admin\model\Homeuser::where('id',$id)>update(['inte'=>$user['inte']+10]);

                    return json(['code'=>1,'data'=>'','msg'=>'连续签到中断,签到成功']);
                }
            }
        }
        $arr['id']=$id;
        $arr['day']=1;
        $arr['bonus']=10;
        $arr['sign_time']=$now;
        $res=\app\admin\model\Homesign::create($arr);
        \app\admin\model\Homeuser::where('id',$id)->update(['inte'=>$user['inte']+10]);
        if($res){
            return json(['code'=>1,'data'=>'','msg'=>'签到成功']);
        }
        return json(['code'=>2,'data'=>'','msg'=>'签到失败']);

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值