思维导图
控制器
//签到 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 Illuminate\Database\Eloquent\Model; 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;