帝国模板之家为广大用户提供专业、一站式建站服务。

网站开发

网站开发栏目,介绍前端、后台、服务器、数据库、建站工具等实用网站开发教程。

当前位置:首页 > 教程 > 网站开发 > 正文

PHP仿京东幸运大转盘抽奖程序代码

帝国模板之家 2020-09-04 网站开发 评论

幸运大转盘抽奖活动是很多公司年会上常见的抽奖活动,选择这样的活动可以增进公司员工之间的感情与交流,同时还能够增加公司的良好氛围。所以说你会抽奖的好处还是蛮多的,可以选择不同的抽奖活动,甚至可以运用一些线上抽奖活动,这样更方便操作,而且还节省时间,需要花费的精力会更少,所以相对来说会非常简单。今天,帝国模板之家小编就大家分享一款PHP仿京东幸运大转盘抽奖代码。页面效果图如下:

前端代码:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta http-equiv="content-type" content="text/html" charset="UTF-8" />
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="Author" content="Amee" />
    <meta name="Keywords" content="" />
    <meta name="Description" content="" />
    <link rel="stylesheet" href="./css/reset.css">
    <link rel="stylesheet" href="./css/style.css">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>幸运大转盘</title>
        <script type="text/javascript">
            ! function (t) {
                var e = 750,
                    i = t.document,
                    n = i.documentElement,
                    o = "orientationchange" in t ? "orientationchange" : "resize",
                    a = function t() {
                        var i = n.getBoundingClientRect().width;
                        return n.style.fontSize = 5 * Math.max(Math.min(i / e * 20, 11.2), 8.55) + "px", t
                    }();
                n.setAttribute("data-dpr", t.navigator.appVersion.match(/iphone/gi) ? t.devicePixelRatio : 1),
                    /iP(hone|od|ad)/.test(
                        t.navigator.userAgent) && (i.documentElement.classList.add("ios"), parseInt(t.navigator.appVersion
                        .match(
                            /OS (\d+)_(\d+)_?(\d+)?/)[1], 10) >= 8 && i.documentElement.classList.add("hairline")), i.addEventListener &&
                    (t.addEventListener(
                        o, a, !1), i.addEventListener("DOMContentLoaded", a, !1))
            }(window);
        </script>
    </head>

<body>

    <div class="demo">
        <div class="pan">
            <div id="disk"></div>
            <div id="start">
                <img id="startbtn" src="./image/point.png" width="100%">
            </div>
        </div>
        <div class="rules">
            <div class="tit">
                抽奖规则
            </div>
            <p> 1、由于系统延迟如未获得抽奖机会请耐心等待</p>
            <p>2、中奖结果以系统弹出的对话框信息为准</p>
            <p>3、下单时间支付时间以京东充值系统时间为准</p>
            <p> 4、活动当后一天建议23点30分前参与抽奖避免因充值成
                功而抽奖活动已结束无法参加活动。</p>
        </div>
    </div>
    <script type="text/javascript" src="./js/jquery-1.8.3.js"></script>
    <script type="text/javascript" src="./js/jQueryRotate.2.2.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#startbtn").click(function () {
                lottery();
            });
        });

        function lottery() {
            $.ajax({
                type: 'POST',
                url: 'ajax.php',
                dataType: 'json',
                cache: false,
                error: function () {
                    alert('出错了!');
                    return false;
                },
                success: function (json) {
                    $("#startbtn").unbind('click').css("cursor", "default");
                    var a = json.angle; //角度 
                    var p = json.prize; //奖项 
                    $("#startbtn").rotate({
                        duration: 3000, //转动时间 
                        angle: 0,
                        animateTo: 1800 + a, //转动角度 
                        easing: $.easing.easeOutSine,
                        callback: function () {
                            var con = confirm('恭喜你,中得' + p + '\n还要再来一次吗?');
                            if (con) {
                                lottery();
                            } else {
                                //再次绑定click事件
                                $("#startbtn").css("cursor", "pointer").on("click", function () {
                                    lottery();
                                });
                                return false;
                            }
                        }
                    });
                }
            });
        }
    </script>
</body>
</html>

ajax.php代码:

<?php
//奖项初始化
$prize_arr = array(
    '0' => array('id' => 1, 'min' => 1, 'max' => 29, 'prize' => '一等奖', 'v' => 1),
    '1' => array('id' => 2, 'min' => 302, 'max' => 328, 'prize' => '二等奖', 'v' => 2),
    '2' => array('id' => 3, 'min' => 242, 'max' => 268, 'prize' => '三等奖', 'v' => 5),
    '3' => array('id' => 4, 'min' => 182, 'max' => 208, 'prize' => '四等奖', 'v' => 7),
    '4' => array('id' => 5, 'min' => 122, 'max' => 148, 'prize' => '五等奖', 'v' => 10),
    '5' => array('id' => 6, 'min' => 62, 'max' => 88, 'prize' => '六等奖', 'v' => 25),
    '6' => array('id' => 7, 'min' => array(32, 92, 152, 212, 272, 332),
        'max' => array(58, 118, 178, 238, 298, 358), 'prize' => '七等奖', 'v' => 50)
);

//抽奖开始
foreach ($prize_arr as $key => $val) {
    $arr[$val['id']] = $val['v'];
}

$rid = getRand($arr); //根据概率获取奖项id

$res = $prize_arr[$rid - 1]; //中奖项
$min = $res['min'];
$max = $res['max'];
if ($res['id'] == 7) { //七等奖
    $i = mt_rand(0, 5);
    $result['angle'] = mt_rand($min[$i], $max[$i]);
} else {
    $result['angle'] = mt_rand($min, $max); //随机生成一个角度
}
$result['prize'] = $res['prize'];

echo json_encode($result);

/**
 * 根据概率获取奖项
 * @param unknown $proArr
 * @return Ambigous <string, unknown>
 */
function getRand($proArr) {
    $result = '';

    //概率数组的总概率精度
    $proSum = array_sum($proArr);

    //概率数组循环
    foreach ($proArr as $key => $proCur) {
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $proCur) {
            $result = $key;
            break;
        } else {
            $proSum -= $proCur;
        }
    }
    unset($proArr);

    return $result;
}

ok,大家赶紧测试一下吧。

这世上无忧无虑的人,反而相对寿命会长点。

已有 位小伙伴发表了看法

欢迎 发表评论

  • 匿名发表

关于

帝国cms模板

网页插件

帝国模板之家 | www.moyouyouw.cn

本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系站长删除,谢谢! 寻找帝国cms模板首选帝国模板之家,用心做站,上线至今广受好评,值得信赖!

  • 交流群1:帝国cms交流群1
  • 交流群2:帝国cms交流群2
在线QQ 给我留言