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>



原创粉丝点击