签到的一些基本逻辑

思维导图

控制器

//签到
    public function userQian(Request $request){
        if(empty($request['user_id'])){
            return ['code'=>1,'msg'=>'参数不能为空','result'=>null];
        }

        $current_time = date('Y-m-d',time());
        //调用方法查看今天是否签到过
        $count = Qian::getCount($request['user_id'],$current_time);
        if($count>0){
            return ['code'=>1,'msg'=>'已经签过了','result'=>null];
        }

        //查询上次签到的时间
        $res = Qian::lastDay($request['user_id']);

        //当前时间-最近一次签到的时间 = 中间的时间差
        $timec = (strtotime($current_time)-strtotime($res['q_time']))/60/60/24;

        if($timec==1){
            //表示是连续签到
            $last_days = $res['q_day']+1;
        }else{
            $last_days = 1;
        }

        //调用方法完成签到的功能
        if(Qian::qiandao($request['user_id'],$current_time,$last_days)){
            return ['code'=>0,'msg'=>'签到成功','result'=>$last_days];
        }else{
            return ['code'=>1,'msg'=>'签到失败','result'=>null];
        }

    }

模型层

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Qian extends Model
{
    protected $table = 'qian';
    public $timestamps = false;

    //查询用户当天是否签到成功
    static public function getCount($user,$time){
        return self::where('user_id',$user)
            ->where('q_time',$time)
            ->count();
    }

    //查询上次签到的时间
    static public function lastDay($user){
        return self::where('user_id',$user)
            ->orderByDesc('q_id')
            ->limit(1)
            ->select(['q_time','q_day'])
            ->first();
    }

    static public function qiandao($user_id,$ctime,$num){
        //根据用户id查看有没有记录
        $count = self::where('user_id',$user_id)->count();
        if($count>0){
            //有记录更新
            return self::where('user_id',$user_id)->update([
                'q_time'=>$ctime,
                'q_day'=>$num
            ]);
        }else{
            //没有记录入库
            return self::insert([
                'user_id'=>$user_id,
                'q_time'=>$ctime,
                'q_day'=>$num
            ]);
        }


    }
}

数据表

CREATE TABLE `qian` (
`q_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_id` int(11) DEFAULT NULL,
`q_time` date DEFAULT NULL,
`q_day` int(11) DEFAULT '0',
PRIMARY KEY (`q_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

原文地址:https://www.cnblogs.com/jiangshiguo/p/13731408.html