• 签到的一些基本逻辑


    思维导图

    控制器

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

  • 相关阅读:
    Nbear讲解 之核心类CodeGenerator
    计算字符串显示的像素
    C# 加密算法[汇总]
    索引器的本质
    Excel[.xls|.xlsx|.csv] 导入 导出
    Spring.Net Ioc 实例
    反射中 BindingFlags标识
    C# 图片操作 常用方法 总结
    iTextSharp 生成pdf Form 实例
    玩转 Route
  • 原文地址:https://www.cnblogs.com/jiangshiguo/p/13731408.html
Copyright © 2020-2023  润新知