thinkphp 抽奖程序 房产网
来源:互联网 发布:为什么淘宝评论删不掉 编辑:程序博客网 时间:2024/03/28 21:05
<?phpnamespace Choujiang\Controller;use Think\Controller;class IndexController extends Controller { public function index(){ $members_luck=M('members_luck'); $data['mid'] =I('get.mid'); $data['mname'] =I('get.mname'); $data['vouchers'] =0; //奖金总额 $data['jiangpin'] =1 ; // 0:再来一次 1:100元 2:200元 3:300元 4:4999元 $data['yaoqingid'] =0; //被邀请人的mid $data['yaoqingnum'] =0; //邀请了多少个用户 $data['yaoqingids'] ='18,19';//我邀请的人的mid 数组 $data['flag'] =0; //是否允许抽奖 // 0 不允许 1 允许 if($members_luck->find($data['mid'])== null){ $members_luck->add($data); }else{ //echo "存在,不需要插入"; } $prize_arr = array( '0' => array('id'=>1,'prize'=>'100','v'=>50), '1' => array('id'=>2,'prize'=>'200','v'=>30), '2' => array('id'=>3,'prize'=>'0','v'=>10), //再来一次 '3' => array('id'=>4,'prize'=>'1000','v'=>5), '4' => array('id'=>5,'prize'=>'2000','v'=>4), '5' => array('id'=>6,'prize'=>'4999','v'=>1), ); /* * 每次前端页面的请求,PHP循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 * 将中奖奖品保存在数组$res['yes']中, * 而剩下的未中奖的信息保存在$res['no']中, * 最后输出json个数数据给前端页面。 */ $arr=array(); foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = $this->get_rand($arr); //根据概率获取奖项id $res['id']= $rid; $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项 session('cj_id',$rid); session('cj_value',(int)$res['yes']);//将预计设的抽奖金额存入session 在领奖时需要与该值 保持一致 规避错误! session('mid',$data['mid']);//保存用户mid mid unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项 shuffle($prize_arr); //打乱数组顺序 for($i=0;$i<count($prize_arr);$i++){ $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr;//未中奖项目 //echo '<br><pre>'; $this->ajaxReturn($res); // print_r($res); //echo '</pre>'; //echo "成功发布一个二手房"; } /** * * 一段经典的概率算法 * * */ function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //echo 'prosum='.$proSum; //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; } function lingjiang(){ //判断抽奖 if(!session('?cj_id') || !session('?mid')){ $data['flag']=1; $data['message']="抽奖出错!请刷新页面再进行抽奖!".session('cj_id').'+'.session('mid'); $this->ajaxReturn($data); } if(I('get.cj_id') != session('cj_id') || I('get.mid') != session('mid')){ $data['flag']=2; $data['message']=session('cj_id').'+'.session('mid')."抽中的奖品与预设的不一致!".I('get.cj_id')."+".I('get.mid'); $this->ajaxReturn($data); } if(I('get.cj_id')==3){ $data['flag']=3;// 1 代表再玩一次,并刷新; $data['message']="再玩一次!"; $this->ajaxReturn($data); } $mid= session('mid'); $members_luck=M('members_luck'); /*$data['mid'] =253; $data['mname'] ='15181805492'; $data['vouchers'] =0; //奖金总额 $data['jiangpin'] =1 ; // 0:再来一次 1:100元 2:200元 3:300元 4:4999元 $data['yaoqingid'] =0; //被邀请人的mid $data['yaoqingnum'] =0; //邀请了多少个用户 $data['yaoqingids'] ='18,19';//我邀请的人的mid 数组 $data['flag'] =1; //是否允许抽奖 // 0 不允许 1 允许*/ $result1 = $members_luck->where("mid=".$mid)->setInc('vouchers',session('cj_value'));//求和 $result2 = $members_luck->where("mid=".$mid)->setField('flag',0); $result3 = $members_luck->where("mid=".$mid)->setField('yaoqingid',I('get.yaoqing_mid')); echo $result1.$result2.$result3; $data['flag']=4; $data['message']="成功领取了抵用券!您当前总共有".$data['vouchers']."元抵用券!"; //echo $data['message']; $data= $members_luck->find($mid);//总共抵用券 print_r($data); $this->ajaxReturn($data); } }
以上是抽奖tp的后端处理
以下是前端代码
<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>jQuery限制次数的大转盘抽奖代码</title> <meta charset="utf-8"> <meta name="keywords" content=""> <meta name="description" content=""> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="renderer" content="webkit"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="layui/css/layui.css"> <link rel="stylesheet" type="text/css" href="http://now.toutoufc.com/t/public/jiang/reset.css" /> <style> .g-content { width: 100%; background: #fbe3cc; height: auto; font-family: "微软雅黑", "microsoft yahei"; } .g-content .g-lottery-case { width: 500px; height: 845px; margin: 0 auto; overflow: hidden; text-align: center; } .g-content .g-lottery-case .g-left h2 { font-size: 20px; line-height: 32px; font-weight: normal; margin-left: 20px; } .g-content .g-lottery-case .g-left { width: 450px; } .g-lottery-box { width: 400px; height: 400px; margin-left: 30px; position: relative; background: url(http://now.toutoufc.com/t/public/jiang/ly-plate-c.gif) no-repeat; } .g-lottery-box .g-lottery-img { width: 340px; height: 340px; position: relative; background: url(http://now.toutoufc.com/t/public/jiang/bg-lottery.png) no-repeat; left: 30px; top: 30px; } .g-lottery-box .playbtn { width: 186px; height: 186px; position: absolute; top: 77px; left: 77px; background: url(http://now.toutoufc.com/t/public/jiang/playbtn.png) no-repeat; } </style></head><body><script type="text/javascript"> var CMS_ABS = 'http://now.toutoufc.com/' , hostname = '透透网' , tplurl = 'http://now.toutoufc.com/template/blue/' , vcodes = ',register,admin,freesms,commu1,commu3,commu4,commu5,commu8,commu32,commu33,commu35,commu40,commu45,commu46,commu49,archive,archive8,archive106,archive101,archive_fy,archive_xq,payonline,pm'; var originDomain = originDomain || document.domain; document.domain = 'now.toutoufc.com' || document.domain;</script><script src="http://now.toutoufc.com/t/public/jiang/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript" src="http://now.toutoufc.com/t/public/jiang/jquery.rotate.min.js"></script><div class="g-content"> <div class="g-lottery-case"> <div class="g-left"> <h2>尊敬的会员你好: <span id="userbox" style="color:red;font-weight: bold">游客</span> <br>您已拥有<span class="playnum"></span>次抽奖机会,点击立刻抽奖!~</h2> <div class="g-lottery-box"> <div class="g-lottery-img"> <a class="playbtn" href="javascript:;" title="开始抽奖"></a> </div> </div> </div> </div></div><script> $(function() { var $btn = $('.playbtn'); var playnum = 100; //初始次数,由后台传入 $('.playnum').html(playnum); var isture = 0; var clickfunc = function() { var data = [1, 2, 3, 4, 5, 6]; //data为随机出来的结果,根据概率后的结果 data = data[Math.floor(Math.random() * data.length)]; data = userdata.id; switch(data) { //0,60,120,180,240,300 case 1: rotateFunc(1, 120, '恭喜你抽中<span style="color:red;font-weight: bold">100元</span>透透房产网购房抵用券'); break; case 2: rotateFunc(2, 180, '恭喜你抽中200元透透房产网购房抵用券'); break; case 3: rotateFunc(3, 60, '谢谢参与,再来一次!'); break; case 4: rotateFunc(4, 240, '恭喜你抽中1000元透透房产网购房抵用券'); break; case 5: rotateFunc(5, 300, '恭喜你抽中2000元透透房产网购房抵用券'); break; case 6: rotateFunc(6, 0, '恭喜你抽中4999元透透房产网购房抵用券'); break; } } $btn.click(function() { if(isture) return; // 如果在执行就退出 isture = true; // 标志为 在执行 //先判断是否登录,未登录则执行下面的函数 if(loginfo && loginfo.user_info.mid == 0) { $('.playnum').html('0'); playnum=0; layer.open( {content:'登录后才能参与抽奖',time:4000,yes: function(index, layero){ window.location.href="/login.php"; }}); //alert("请先登录"); isture = false; } else { //登录了就执行下面 if(playnum <= 0) { //当抽奖次数为0的时候执行 alert("没有次数了"); $('.playnum').html(0); isture = false; } else { //还有次数就执行 playnum = playnum - 1; //执行转盘了则次数减1 if(playnum <= 0) { playnum = 0; } $('.playnum').html(playnum); clickfunc(); } } }); var rotateFunc = function(awards, angle, text) { isture = true; $btn.stopRotate(); $btn.rotate({ angle: 0, duration: 4000, //旋转时间 animateTo: angle + 1440, //让它根据得出来的结果加上1440度旋转 callback: function() { isture = false; // 标志为 执行完毕 overdo(awards,text); //alert(text); } }); }; }); // uri2MVC function uri2MVC ( uri, addFileName ) { var _split = '/'; if ( !_08_ROUTE_ENTRANCE ) { var _08_ROUTE_ENTRANCE = 'index.php?/'; } (addFileName == undefined) && (addFileName = true); var _uri = ''; if ( typeof uri == 'string' ) { _uri = uri.replace(/&/g, _split).replace(/=/g, _split); } else { for ( var i in uri ) { _uri += (i + _split + uri[i] + _split); } } var _endstr = _uri.charAt(_uri.length - 1); if ( _endstr == _split ) { _uri = _uri.substr(0, _uri.length - 1); } var newURI = addFileName ? _08_ROUTE_ENTRANCE + _uri : _uri; if ( !/domain/i.test(newURI) ) { newURI += (_split + 'domain' + _split + (self.originDomain || document.domain)); } return newURI; }</script><script type="text/javascript" src="http://toutoufc.com/template/blue/js/common.js?20150907"></script><script src="layui/layui.js"></script><script> //一般直接写在一个js文件中 var loginfo=''; var userdata=''; function logincheck(){ //不等于0 则没有登录了 直接调转到会员管理页 if (loginfo && loginfo.user_info.mid == 0) { //alert(loginfo.user_info.mid); layer.open( {content:'登录后才能参与抽奖',time:4000,yes: function(index, layero){ //do something window.location.href="/login.php"; //layer.close(index); }}); }else{ //layer.msg(loginfo.user_info.mid+loginfo.user_info.mname); //$('#userbox').html(loginfo.user_info.mname); } } //判断登录 $(function () { $.getJSON(CMS_ABS + uri2MVC('ajax=is_login&datatype=json'), function (d) { loginfo = d; //不等于0 则没有登录了 直接调转到会员管理页 if (loginfo && loginfo.user_info.mid == 0) { /*layer.open( {content:'登录后才能参与抽奖',time:4000,yes: function(index, layero){ window.location.href="/login.php"; }});*/ }else{ $('#userbox').html(loginfo.user_info.mname); $.getJSON('http://now.toutoufc.com/t/index.php/choujiang/index/index/mid/'+loginfo.user_info.mid+'/mname/'+loginfo.user_info.mname, function (d) { userdata = d; alert(userdata.id+' 你应该中的奖品是:'+userdata.yes); //userdata.yes 当前奖品文本内容 userdata.no 未指定的奖品 }); } }); //alert(loginfo); //获取预设奖项 }); layui.use(['layer', 'form'], function(){ var layer = layui.layer ,form = layui.form; //layer.msg('layer的弹窗怎么样'); }); //抽完后的动作 function overdo(awards,text){ if(awards==3){ layer.open({ title:'抽奖结果', content: '<div style="font-size: 14px;font-family: "微软雅黑">'+text+'</div>', btn: '再玩一次', btnAlign: 'c', yes: function(index, layero){ //按钮【按钮一】的回调 layer.msg(index); } ,cancel: function(){ //右上角关闭回调 //return false 开启该代码可禁止点击该按钮关闭 } }); }else{ layer.open({ title:'抽奖结果', content: '<div style="font-size: 14px;font-family: "微软雅黑">'+text+'</div>', btn: '立即领奖', btnAlign: 'c', yes: function(index, layero){ //按钮【按钮一】的回调 //alert('mid='.loginfo.user_info.mid); $.getJSON('http://now.toutoufc.com/t/index.php/choujiang/index/lingjiang/mid/'+loginfo.user_info.mid+'/cj_id/'+userdata.id+'/yaoqing_mid/'+0, function (d) { result = d; //alert(result.id+' 你应该中的奖品是:'+result.yes); //result.yes 当前奖品文本内容 result.no 未指定的奖品 layer.msg(result.message); }); } ,cancel: function(){ //右上角关闭回调 //return false 开启该代码可禁止点击该按钮关闭 } }); } //layer.msg('str='+text); }</script></body></html>
阅读全文
1 0
- thinkphp 抽奖程序 房产网
- thinkphp 抽奖算法
- 抽奖程序
- 抽奖程序
- 抽奖程序
- 抽奖程序
- thinkphp 微信抽奖类
- 随机抽奖程序
- JavaScript抽奖小程序
- 抽奖程序实现方法
- Flash 抽奖程序制作
- js随机抽奖程序
- 抽奖程序 Award
- 小型抽奖程序
- 抽奖程序笔记
- 抽奖程序,欢迎拍砖
- JS抽奖程序
- PHP抽奖小程序
- jvm虚拟机运行时分析
- Python脚本--基于正则表达式对文件进行解析
- java数据同步
- HDU6168
- 260不知为何ac不了
- thinkphp 抽奖程序 房产网
- L3-001. 凑零钱
- 删除字符串中指定的字符,如果字符前后有指定的标点符号也一并删除
- Java 循环结构
- GJJ的日常之再游戏
- 基于vue2.0打造移动商城页面实践
- IDEA sliksvn提交代码提示no changes detected
- Python爬取OJ提交过的代码
- LeetCode(279)Perfect Squares