PHP转盘抽奖接口实例

 更新时间:2015年02月09日 15:48:00   作者:yhb241  
这篇文章主要介绍了PHP转盘抽奖接口的实现方法,实例分析了随机抽奖接口的实现原理与对应数据库操作的技巧,需要的朋友可以参考下

本文实例讲述了PHP转盘抽奖接口的实现方法。分享给大家供大家参考。具体如下:

这里的转盘抽奖随机返回一个转盘角度,概率可自己定义

lottery_get.php接口文件如下:

复制代码 代码如下:
<?php 
/*session_start();
if(!isset($_SESSION['zaszh_user_id'])){
    echo json_encode(array('status'=>'error','msg'=>'连接超时,请重新打开页面。'));
    exit;
}
$user_id = $_SESSION['zaszh_user_id'];*/ 
 
$user_id = 1; // 测试用 
 
// 转盘区域 
$arr_area = array( 
    '0' => array('min_angle'=>1,'max_angle'=>45,'prize'=>'小米'),
    '1' => array('min_angle'=>46,'max_angle'=>90,'prize'=>'拍立得'),
    '2' => array('min_angle'=>91,'max_angle'=>135,'prize'=>'10元话费'),
    '3' => array('min_angle'=>136,'max_angle'=>180,'prize'=>'5元话费'),
    '4' => array('min_angle'=>181,'max_angle'=>225,'prize'=>'谢谢参与'),
    '5' => array('min_angle'=>226,'max_angle'=>270,'prize'=>'谢谢参与'),
    '6' => array('min_angle'=>271,'max_angle'=>315,'prize'=>'谢谢参与'),
    '7' => array('min_angle'=>316,'max_angle'=>360,'prize'=>'谢谢参与') 
); 
 
// 选定区域 
$area_selected = array(); 
// 随机抽取 
$num_rand = mt_rand(1,10); 
switch($num_rand){ 
    // 小米 
    case 1: $area_selected = $arr_area[0]; break; 
    // 拍立得 
    case 2: $area_selected = $arr_area[1]; break; 
    // 10元话费 
    case 3: $area_selected = $arr_area[2]; break; 
    // 5元话费 
    case 4: $area_selected = $arr_area[3]; break; 
    // 谢谢参与 
    default: 
        switch(mt_rand(1,4)){ 
            case 1: $area_selected = $arr_area[4]; break; 
            case 2: $area_selected = $arr_area[5]; break; 
            case 3: $area_selected = $arr_area[6]; break; 
            case 4: $area_selected = $arr_area[7]; break; 
        } 
        break; 

echo $area_selected['prize']; 
 
require('connect_database.php'); 
// 扣除答题积分 
$mysqli->query("update zaszh_user set answer_points=answer_points-5 where id='{$user_id}' and answer_points>=5"); 
if($mysqli->affected_rows){ 
    // 有积分 
    // 记录积分消耗 
    $mysqli->query("insert into zaszh_answer_points_consume(user_id,points_consume,consume_for,create_date) values('{$user_id}',5,'lottery',unix_timestamp(now()))"); 
    switch($area_selected['prize']){ 
        case '小米': 
            $mysqli->query("update zaszh_prize_surplus set surplus=surplus-1 where prize='小米' and surplus>0"); 
            if($mysqli->affected_rows){ 
                // 有剩余 
                $mysqli->query("insert into zaszh_award(user_id,prize,create_date) values('{$user_id}','小米',unix_timestamp(now()))"); 
                if($mysqli->affected_rows){ 
                    echo json_encode(array('status'=>'success','msg'=>'小米')); 
                }else{ 
                    // 获奖失败 
                } 
            }else{ 
                // 无剩余 
            } 
            break; 
        case '拍立得': 
            $mysqli->query("update zaszh_prize_surplus set surplus=surplus-1 where prize='拍立得' and surplus>0"); 
            if($mysqli->affected_rows){ 
                // 有剩余 
                $mysqli->query("insert into zaszh_award(user_id,prize,create_date) values('{$user_id}','拍立得',unix_timestamp(now()))"); 
                if($mysqli->affected_rows){ 
                    echo json_encode(array('status'=>'success','msg'=>'拍立得')); 
                }else{ 
                    // 获奖失败 
                } 
            }else{ 
                // 无剩余 
            } 
            break; 
        case '10元话费': 
            $mysqli->query("update zaszh_telephone_charge_surplus set charge_surplus=charge_surplus-10 where date=substring(now(),1,10) and charge_surplus>=10"); 
            if($mysqli->affected_rows){ 
                // 有剩余 
                $mysqli->query("insert into zaszh_award(user_id,prize,create_date) values('{$user_id}','10元话费',unix_timestamp(now()))"); 
                if($mysqli->affected_rows){ 
                    echo json_encode(array('status'=>'success','msg'=>'10元话费')); 
                }else{ 
                    // 获奖失败 
                } 
            }else{ 
                // 无剩余 
            } 
            break; 
        case '5元话费': 
            $mysqli->query("update zaszh_telephone_charge_surplus set charge_surplus=charge_surplus-5 where date=substring(now(),1,10) and charge_surplus>=5"); 
            if($mysqli->affected_rows){ 
                // 有剩余 
                $mysqli->query("insert into zaszh_award(user_id,prize,create_date) values('{$user_id}','5元话费',unix_timestamp(now()))"); 
                if($mysqli->affected_rows){ 
                    echo json_encode(array('status'=>'success','msg'=>'5元话费')); 
                }else{ 
                    // 获奖失败 
                } 
            }else{ 
                // 无剩余 
            } 
            break; 
        default: 
            echo json_encode(array('status'=>'success','msg'=>'谢谢参与')); 
    } 
}else{ 
    // 无积分 
    echo json_encode(array('status'=>'error','msg'=>'您的积分不足。')); 

$mysqli->close();

希望本文所述对大家的php程序设计有所帮助。

相关文章

  • PHPWind与Discuz截取字符函数substrs与cutstr性能比较

    PHPWind与Discuz截取字符函数substrs与cutstr性能比较

    PHP性能优化系列第四期实战篇,如何使用PEAR Benchmark类工具获取函数执行性能,这里以PHPWind与Discuz!两个社区论坛的截取字符函数substrs与cutstr为例,分析两个函数的执行性能情况
    2011-12-12
  • ThinPHP无法加载模块问题的解决方案

    ThinPHP无法加载模块问题的解决方案

    ThinPHP是一个轻量级的PHP框架,它提供了一种简单的方式来开发Web应用程序,然而,有时候我们可能会遇到ThinPHP无法加载模块的问题,这可能是由于多种原因导致的,本文将详细介绍如何解决这个问题,需要的朋友可以参考下
    2023-12-12
  • php中使用websocket详解

    php中使用websocket详解

    网上也有一些关于php的websocket的实现,但是只有自己亲手写过之后才知道其中的感受。下面就把个人的一些心得给大家分享下
    2016-09-09
  • PHP容易被忽略而出错陷阱 数字与字符串比较

    PHP容易被忽略而出错陷阱 数字与字符串比较

    数字与字符串比较时, 先尝试将字符串转换为数字, 再比较, 一个不能转换为数字的字符串, 转换结果为0, 故, 与0比较总返回 true
    2011-11-11
  • 关于PHP5和PHP7中数组实现方式的比较总结

    关于PHP5和PHP7中数组实现方式的比较总结

    PHP7比PHP5性能提升了两倍,全面一致的64位支持,以前的许多致命错误,现在改成抛出异常,下面这篇文章主要给大家介绍了关于PHP5和PHP7中数组实现方式比较的相关资料,需要的朋友可以参考下
    2021-09-09
  • 配置支持SSI

    配置支持SSI

    配置支持SSI...
    2006-11-11
  • PHP中合并数组的常见方法分享

    PHP中合并数组的常见方法分享

    相信各位phper在日常开发中,会经常遇到需要合并数组的场景。那么,在php中都有哪一些方法可以用来合并数组呢,本文为大家进行了一个总结,希望对大家有所帮助
    2022-11-11
  • php中文字母数字验证码实现代码

    php中文字母数字验证码实现代码

    php下实现多种方式的验证码实现效果代码
    2008-04-04
  • Laravel中log无法写入问题的解决

    Laravel中log无法写入问题的解决

    这篇文章主要介绍了Laravel中log无法写入问题的解决,文中给出了详细解决方法供大家参考学习,对大家具有一定的参考借鉴价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 一键生成各种尺寸Icon的php脚本(实例)

    一键生成各种尺寸Icon的php脚本(实例)

    下面小编就为大家带来一篇一键生成各种尺寸Icon的php脚本(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论