当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel框架实现抢红包功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-19 10:53:26 浏览: 评论:0 

这篇文章主要介绍了Laravel框架实现抢红包功能,结合具体实例形式分析了Laravel框架实现抢红包的相关原理、步骤、功能实现技巧与操作注意事项,需要的朋友可以参考下。

本文实例讲述了Laravel框架实现抢红包功能,分享给大家供大家参考,具体如下:

首先进行登录

  1. <form action="{{url('b_login')}}" method="post"> 
  2.         {{csrf_field()}} 
  3.         <p>用户名:<input type="text" name="username"></p> 
  4.         <p>密&nbsp;码:<input type="password" name="password"></p> 
  5.         <p><input type="submit" value="登录"></p> 
  6.     </form> 

在登录时,我们会进行一些相应的验证:比如用户名,手机号,密码等–

  1. //登录 
  2. public function login(){ 
  3.     if(Request()->isMethod('get')){ 
  4.         return view('Bonus/login'); 
  5.     }elseif(Request()->isMethod('post')){ 
  6.         $info = Request()->only('username','password');//这里为接收的表单数据 
  7.         $result = BonusModel::b_login($info);//调用模型,进行验证 
  8.         if($result['status']==200){ 
  9.             return redirect('b_user'); 
  10.         } 
  11.     } 

模型部分代码

  1. //登录 
  2. public static function b_login($info){ 
  3.     $result = DB::table('bonus_user')->where('username',$info['username'])->first(); 
  4.     if(emptyempty($result)){ 
  5.         $res['status'] = 201; 
  6.         $res['message'] = '用户不存在'
  7.     }else
  8.         if(md5($info['password']) != $result->password){ 
  9.             $res['status'] = 202; 
  10.             $res['message'] = '密码错误'
  11.         }else
  12.             Session::put('uid',$result->id); 
  13.             $res['status'] = 200; 
  14.             $res['message'] = '登录成功'
  15.         } 
  16.     } 
  17.     return $res

登录成功之后,跳转到了用户信息的页面

Laravel框架实现抢红包功能示例

这是登陆之后跳转的登录界面

可以在信息界面自行选择 抢红包 或者 发红包

1.发红包,跳转到相应的发红包界面

Laravel框架实现抢红包功能示例

发红包

输入要发的个数和总金额,然后进行发红包

  1. //控制器部分代码 
  2.     //发红包 
  3.     public function sendRecord(){ 
  4.         if(Request()->isMethod('get')){ 
  5.             return view('Bonus/bonus'); 
  6.         }elseif(Request()->isMethod('post')){ 
  7.             $data = Request()->all(); 
  8.             $result = BonusModel::send($data); 
  9.             if($result['status']==200){ 
  10.                 return redirect('b_user')->with('msg',$result['message']);; 
  11.             }else
  12.                 return redirect('b_user')->with('msg',$result['message']); 
  13.             } 
  14.         } 
  15.     } 
  16. //发红包(模型部分代码) 
  17.   public static function send($data){ 
  18.         $id = Session::get('uid');//取出session中存储的id信息 
  19.         $user = DB::select("select money from bonus_user where id = $id");//根据id查询出相应的用户信息 
  20.         if($user[0]->money<$data['amount']){//判断发红包的金额 和 用户的余额 
  21.             $result['status'] = 203; 
  22.             $result['message'] = "余额不足"
  23.             return $result;die
  24.         }else
  25.             $total = $data['amount'];//发送的总金额 
  26.             $nums = $data['nums'];//红包个数 
  27.             $min = 0.01;//最少领导0.01元 
  28.             $redRecord = [];//定义一个空数组,存储每个红包金额 
  29.             for($i=1;$i<$nums;$i++){ 
  30.                 $safe_total = ($total-($nums-$i)+$min)/($nums-$i);//随机金额上限 
  31.                 $money = mt_rand($min*100,$safe_total*100)/100; 
  32.                 $total = $total-$money
  33.                 $redRecord[] = array
  34.                     'money'=>$money,'uid'=>$id,'create_time'=>date('Y-m-d H:i:s'
  35.                 ); 
  36.             } 
  37.             $redRecord[$nums-1] = array('money'=>$total,'uid'=>$id,'create_time'=>date('Y-m-d H:i:s')); 
  38.             $redarr = array('uid'=>$id,'total'=>$data['amount'],'nums'=>$data['nums'],'create_time'=>date('Y-m-d H:i:s')); 
  39.             DB::table('bonus_record')->insert($redarr);//那个用户发的红包,金额数,个数 
  40.             $info = DB::table('bonus')->insert($redRecord);//红包详细,使用情况 
  41.       DB::table('bonus_user')->where('id',$id)->decrement('money',$data['amount']); 
  42.             if($info){ 
  43.                 $result['status'] = 200; 
  44.                 $result['message'] = "发送成功"
  45.                 return $result
  46.             }else
  47.                 $result['status'] = 201; 
  48.                 $result['message'] = "发送失败"
  49.                 return $result
  50.             } 
  51.         } 
  52.   } 

发送红包之后,返回到用户信息页面,我们可以看到,用户的余额会变少,减少的金额为红包的总额

Laravel框架实现抢红包功能示例

红包发红成功

发送之后,相应的数据已经入了库表,此时我们可以进行抢红包

  1. //控制器部分代码 
  2.     //抢红包 
  3.   public function HitBonus(){ 
  4.       $result = BonusModel::hit();//调用模型 
  5.       if($result['status']==200){ 
  6.         return redirect('b_user')->with('msg',$result['message']);//带信息的重定向 
  7.       }else
  8.         return redirect('b_user')->with('msg',$result['message']); 
  9.       } 
  10.   } 
  11.   //模型部分代码 
  12.   //抢红包 
  13.   public static function hit(){ 
  14.     //检测是否登录 
  15.         if(!Session::has('uid')){ 
  16.             $result['status']=206; 
  17.             $result['message']="登录之后再来抢红包"
  18.             return $result
  19.         } 
  20.         $count = DB::table('bonus')->where('did',Session::get('uid'))->count(); 
  21.         if($count>=1){ 
  22.             $result['status']=208; 
  23.             $result['message']="您已经抢过红包了"
  24.             return $result
  25.         } 
  26.         $data = DB::table('bonus')->where('status',0)->first();//查询出没有被抢的红包 
  27.         if(emptyempty($data)){//如果没有状态为0的红包,说明所有的红包都已经被抢了 
  28.             $result['status']=205; 
  29.             $result['message']="您来晚了,红包已经没有了"
  30.             return $result
  31.         }else{//如果还有红包 
  32.             $array = array
  33.             'status'=>1,//改变红包的状态 
  34.             'did'  =>Session::get('uid'),//抢红包用户的id 
  35.             'update_time'=>date('Y-m-d H:i:s')//抢红包的时间 
  36.             ); 
  37.             $info = DB::table('bonus')->where('rid',$data->rid)->update($array); 
  38.             if($info){ 
  39.                 $res = DB::table('bonus_user')->where('id',Session::get('uid'))->first();//查询抢红包用户的信息 
  40.                 $money = $res->money + $data->money;//原金额加上抢到的金额 
  41.                 $array = array('money'=>$money); 
  42.                 $resu = DB::table('bonus_user')->where('id',Session::get('uid'))->update($array); 
  43.                 $hit_money = $data->money; 
  44.                 if($resu){ 
  45.                     $result['status'] = 200; 
  46.                     $result['message'] = "恭喜您抢到:'".$hit_money."'"
  47.                     return $result
  48.                 } 
  49.             } 
  50.         } 
  51.   } 

我们可以看抢红包的效果

Laravel框架实现抢红包功能示例

抢红包

抢红包成功之后,用户余额会加上抢到的金额

再次点击抢红包之后

Laravel框架实现抢红包功能示例

再次点击抢红包

会提示您已经抢过红包了

这就是一个简单的抢红包~~~

Tags: Laravel抢红包

分享到: