簽到的一些基本邏輯


思維導圖

 

 

 

控制器

//簽到
    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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM