思維導圖
控制器
//簽到 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;