PHP转盘抽奖接口实例


Posted in PHP onFebruary 09, 2015

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
收集的DedeCMS一些使用经验
Mar 17 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
php准确计算复活节日期的方法
Apr 18 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP实现动态web服务器方法
Jul 29 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 PHP
PHP积分兑换接口实例
Feb 09 #PHP
PHP答题类应用接口实例
Feb 09 #PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 #PHP
php构造函数的继承方法
Feb 09 #PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 #PHP
php抽象类使用要点与注意事项分析
Feb 09 #PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 #PHP
You might like
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Python中常用的os操作汇总
2020/11/05 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
params有什么用
2016/03/01 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
2014年端午节活动方案
2014/03/11 职场文书
大型会议策划方案
2014/05/17 职场文书
不错的求职信范文
2014/07/20 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
变长双向rnn的正确使用姿势教学
2021/05/31 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
HDFS免重启挂载新磁盘
2022/04/06 Servers
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
小程序自定义轮播图圆点组件
2022/06/25 Javascript