-
- require_once (APP_ROOT . "./class/class_lib.php");
- require_once libfile ( 'class/StoreProcs' );
- pc_base::load_app_class('table_sub','',0) );
- /**
- * 大きなカルーセル
- * @author 管理者
- *
- */
- class lib_dzp_lottery extends app_lib {
- /**
- *賞品リスト
- */
- public $lottery = 'activity_lyq_lottery'
- /**
- * 賞品ログシート
- */
- public $lottery_log = ' activity_lyq_lottery_log';
- /**
- * n賞
- */
- private $level = array();
- /**
- *賞品情報
- */
- private $lotteryArray = array(); $max = 30000;
- /***
- * 乱数の末尾の数字
- */
- private $type=true;
- private $tel_zy=false;
- /**
- * カテゴリ true: デフォルト false: Palm Su
- */ () {
- $data=getcache('lyqdzp_setting');
- define('TIME', time()) //現在時刻
- define('L_START', strtotime($data['l_start']); / /登録開始時刻
- define('L_END', strtotime($data['l_end'])); //登録終了時刻、-1 は昨日の 23:59:59 を意味します
- define('L_DAY_START',$data['l_day_start) ']); //毎日の開始時刻
- define('L_DAY_END', $data['l_day_end']) //毎日の終了時刻
- define('L_DAY_CISHU', $data['l_day_cishu']); //毎日獲得する賞品の数
- define('L_CISHU', $data['l_cishu']);//獲得した賞品の合計数
- define('L_MIN', 20);//最低LIFBコイン
- define(' L_LFB', $data[ 'l_lfb']);//Lifb コインを減らす
- define('L_ZY', $data['l_zy']); //プロアカウント
- define('L_QUANSHU', $data['l_quanshu') ]);//サークルカウント、大車輪が回転し始めるラウンド数
- define('L_KONGJIANG', intval($data['l_kongjiang'])) //空の賞品の確率
- $host='www. ****.com'; //既存のネットワーク
- if($_SERVER['HTTP_HOST']=='221.****0'){
- $host='221.*****' / /テストマシン
- }elseif($_SERVER['HTTP_HOST ']=='125.com'){
- $host='125life.com';//ローカル
- }elseif(strpos($_SERVER['HTTP_HOST'], '192.168.')==0){
- $ host=$_SERVER['HTTP_HOST'].'/125e.com';//ローカル
- }
- define('L_SITE', 'http://'.$host .'/'); //ドメイン名の末尾に/を追加
- define('L_URL', L_SITE.'index.php');//アクセスアドレス
-
- //フラッシュアドレスからのみアクセス可能
- $ s=L_SITE.'flash/dzp/i.swf';
- if(preg_replace ('/swf.*$/','swf',$_SERVER['HTTP_REFERER'])!=$s&&$this->type ){
- exit('おい、もう十分だ、勝つための正式な方法をパスしてください!');
- }
- $this->load();
- /**
- * プロアカウントを獲得
- */
- private $ハイミンダン = array();
- /**
- * 構成の読み取り
- */
- パブリック関数load() {
- $this->setlottery ();
- $this->ハイミンダン = getcache ( 'tel', 'blanklist' ) ;
- }
- プライベート関数 setlottery() {
- $time=strtotime(date ('Y-m-d',TIME));
- $sql = "select u.*"; (select COUNT( l.lotteryid) from " . DB::table ( $this->lotteryid ) . " AS l where u.lotteryid=l.lotteryid and l.iswining='1')as num ";
- $sql .= " from " . DB::table ( $this->lottery ) . " AS u ";
- $sql .= " where 1 ";
- $sql .= " and u.isdisable='0' ";
- $sql .= " および u.time_start<='$time' ";
- $ sql .= " および u.time_end>='$time' ";
- $sql .= " u.listorder によって注文 "; DB::fetch_all ( $sql );
- $sum = 0;
- foreach ( $d as $r ) {
- $r ['sum_over'] = intval ( $r ['sum'] ) - intval [ 'num'] );
- if ($r ['sum'] > 0) {
- $sum += $r ['sum']
- }
- $r['msg']=str_replace('{name) }', $r['name'],$r['msg' ]);
- $this->lotteryArray [$r ['lotteryid']] = $r; $sum=1000;
- $m = 1;
- $newsum=0;
- //空の賞金 + 20% の賞金
- $sum + $sum * (L_KONGJIANG) /100) / ((100-L_KONGJIANG)/100);
- foreach ( $this->lotteryArray as $r ) {
- if ($r ['sum'] > 0) {
- $newsum=$r [ '合計'];
- if($r['確率']> 0){
- $確率=0;
- $確率=ceil($r ['合計']*100/$r['確率']) ;
- if($確率>0){
- $ニュースム=$確率;
- }
- $this->レベル [$r ['lotteryid']] ['start'] = $m; >レベル [$r ['lotteryid']] ['end'] = $m + $newsum;
- }
- }
- }
- /**
- * ブラックリスト
- */
- public function check($user) {
- if (intval ( $user ['uid'] ) < 1) {
- //ログインしていません
- return
- }
- if(intval(TIME) //早く来ましたね、イベントはまだ続いています、スタートしません!
- return -21;
- }
- if(intval(TIME)>intval(L_END)){
- //イベント時間が過ぎてしまいました、大変申し訳ございません、ありがとうございます!
- return -22;
- if ($this->get_user_lfb ( $user ['uid'] ) < L_MIN) {
- //$this->credit ( $user ['uid'], -11 , $logid );
- return -11; //LIF 残高が不足しています
- }
-
- $data = array(
- 'uid' => $user ['uid'],
- 'tel' => ['tel'],
- 'ip' => $user ['ip'],
- 'addtime' => 時間 ()
- ); $data, true );
-
-
- //ユーザーが毎日獲得した賞品の数を確認します
- if ($this->get_lottery ( $user ['uid'], strtotime ( date ( 'Y-m-d', TIME ) ), strtotime ( "+1day", strtotime ( date ( 'Y-m-d', TIME ) ) ), true ) >= L_DAY_CISHU) {
- $this->credit ( $user ['uid'], -12 , $logid );
- //残念ながら、今回は何も描画されませんでした。
- return -12;
- //ユーザーが獲得した賞品の数を確認する
- if ($this->get_lottery ( $user ['uid'], 0, 0, true ) > L_CISHU&&L_CISHU>0) {
- $ this->credit ( $user ['uid'], -12, $logid );
- //残念ながら、今回は何も描画されていません!
- return -15;
- }
- //ブラックリストを検出、確率を設定
- if ($this->checkhei ( $user ['tel'] ) > 0) {
- $this->credit ( $user [ ' uid'], -13, $logid );
- //残念ながら、今回は何も描画されませんでした。
- return -13;
- $lotteryid = $this->chojiang();
- $this->credit ( $user ['uid'], $lotteryidif ($lotteryid > 0) {
- return $this->lotteryid]; else {
- return -4;
- //-1 賞金すでに配布されました
- //-2 この期間の賞品はプレイされました
- //-3 賞品は配布されていません
- //-4 賞品に問題があります
- //-11 ライフコインの残高が不足しています
- //-12残念ながら今回は何も描かれませんでした!
- //-ブラックリスト 13 の中で、残念ながら今回は何も描かれていませんでした。
- //-14 当選したプロアカウントは高額賞金について話すことを禁止します
- //-15 が宜中賞品の総数を超えました
- //- 送信された携帯電話番号が間違っています。 21 早いのにイベントはまだ始まっていません!
- //-22はイベント時間を過ぎてしまいました、大変申し訳ございません、ありがとうございました!
- //-23申し訳ありませんが、今はイベント時間ではありません。イベント時間は毎日です
- }
- /**
- * 表示
- * @paramknown_type $data
- */
- public function show($data){
- $ok=0;//3 勝ち
- $zz= 0;//ルーレットの度数
- $result='';//賞品名
- $lotteryid=0;//賞品ID
- if(is_array($data)){
- $ok=3; =$data['msg'];
- $zz=$data['angle']+L_QUANSHU*360;
- $lotteryid=$data['lotteryid'];
- $m=''; ($data) {
- case 0:{
- $m= 'まずログインしてください。 ';
- }break;
- case -11:{
- $m= 'ラッフルズの残高が不足しています! ';
- }break;
- case -12:{
- $m= '残念ながら、今回は何も描画されませんでした。 ';
- }break;
- case -21:{
- $m= 'まだイベントは始まっていません! ';
- }break;
- case -22:{
- $m= 'イベント時間が過ぎてしまいました、申し訳ありません、ありがとうございます! ';
- }break;
- case -23:{
- $m= '申し訳ありませんが、今はイベントの時間ではありません。イベントの時間は毎日です'.L_DAY_START.':00-'.L_DAY_END.':00';
- }break;
- default:{
- $m= '残念ながら、今回は何も描画されていません!';
- }休憩;
- }
- $結果=$m;
- $ok=3;//3中奖
- $zz=360+L_QUANSHU*360;//再接再厉
- }
- header("Expires:Mon,26Jul199705:00:00GMT");
- header("キャッシュ制御:キャッシュなし、再検証が必要");
- header("Pragma:no-cache");
- header("Content-type:text/html;charset=utf-8");
- if(!$this->type){
- echo json_encode(array('return'=>$lotteryid,
- 'msg'=>$result));
- }else{
- echo ''."n";
- echo ''."n";
- echo ''."n";
- echo ''."n";
- }
- 終了;
- }
- /**
- * 抽選番号
- */
- プライベート $hao=0;
- /**
- *抽選が始まります
- */
- プライベート関数 chojiang() {
- $j = 0;
- $lotteryid = 0;
- $j = mt_rand ( 1, $this->max );
- $this->ハオ=$j;
- foreach ( $this->level as $k => $r ) {
- if ($r ['start'] <= $j && $r ['end'] > $j) {
- $宝くじID = $k;
- 休憩;
- }
- }
- $d = array(
- 1 => array(
- 'time' => strtotime ( date ( 'Y-m-d 00:00:00', TIME ) ),
- 'time_end' => strtotime (日付 ('Y-m-d 07:59:59', TIME ) )
- )
- );
- for ($i=2;$i<=17;$i++){
- $d[$i]=array(
- 'time' => strtotime ( date ( 'Y-m-d '.($i+6). ':00:00', TIME ) ),
- 'time_end' => strtotime ( date ( 'Y-m-d '.($i+6).':59:59', TIME ) )
- );
- }
- if($lotteryid>0){
- $l=$this->lotteryArray [$lotteryid];
- $sql = "select count(*) m from " . DB::table ( $this->lottery_log );
- $sql .= " wherelotteryid='$lotteryid' ";
- $s= intval ( DB::result_first ( $sql ) );
- $sum_over=$l['sum']-$s;
- if($sum_over>0){
- //今回のタイムセグメントの品数
- $sum=0;
- foreach ($d as $k=>$r){
- if(TIME>=$r['time']&&TIME<=$r['time_end']){
- if($l['time_'. $k]>0){// 数制限
- $sum=$this->get_lottery_id(0,$r['time'],$r['time_end']+1,$lotteryid);
- if($sum>=$l['time_'.$k]){
- //本時間段奖品已玩
- $lotteryid=-2;
- 休憩;
- }
- }elseif ($l['time_'.$k]==0){
- //不発行奖品
- $lotteryid=-3;
- 休憩;
- }else{
- //-1 無制限
- }
-
- }
- }
- if($this->tel_zy && $lotteryid>0&&$lotteryid<4){
- $lotteryid=-14;
- }
- }else{
- //奖品已発行完
- $lotteryid=-1;
- }
- }else{
- //奖品有问题
- $lotteryid=-4;
- }
- $lotteryid を返します;
-
- }
- /**
- * ブラックリストと一般ユーザーの検出、確率
- * @param string $tel
- * @return が 1 より大きい場合、今回は描画が禁止されていることを意味します
- */
- プライベート関数 checkhei($tel) {
- $n = mt_rand ( 1, 100 );
- if (in_array ( $tel, $this->heimingdan ['tel'] ) && L_ZY > 0) {
- $this->tel_zy=true;
- if ($n > L_ZY) {
- return 1;
- }
- }else{
- //号码检测
- if (!self::check_tel($tel)) {
- return 1;
- }
- }
- 0を返す;
- }
- /**
- * 賞品の総数
- * @param intval $uid
- * @param intval $start
- * @param intval $end
- * @param bool $bool true 取得した賞品の数 false 統計情報なし
- * @return number
- */
- private function get_lottery($uid = 0, $start = 0, $end = 0, $bool = false) {
- $sql = "select count(*) m from " 。 DB::table ( $this->lottery_log );
- $sql .= " ここで 1 ";
- if (intval ( $start ) > 0) {
- $sql .= " and addtime>='$start' ";
- }
- if (intval ( $end ) > 0) {
- $sql .= " and addtime<'$end' ";
- }
- if ($bool) {
- $sql .= " andlotteryid>0 ";
- }
- if (intval ( $uid ) > 0) {
- $sql .= " and uid='$uid' ";
- }
- return intval ( DB::result_first ( $sql ) );
- }
- /**
- * 賞品の総数
- * @param intval $uid
- * @param intval $start
- * @param intval $end
- * @param intval $bool 賞品 ID
- * @return Number
- */
- private function get_lottery_id($uid = 0, $start = 0, $end = 0, $lotteryid = 0) {
-
- $sql = "select count(*) m from 「。」 DB::table ( $this->lottery_log );
- $sql .= " ここで 1 ";
- if (intval ( $start ) > 0) {
- $sql .= " and addtime>='$start' ";
- }
- if (intval ( $end ) > 0) {
- $sql .= " and addtime<'$end' ";
- }
- if ($lotteryid>=0) {
- $sql .= " andlotteryid='$lotteryid' ";
- }
- if (intval ( $uid ) > 0) {
- $sql .= " and uid='$uid' ";
- }
- return intval ( DB::result_first ( $sql ) );
- }
- /**
- * ユーザーの Rafflecoin を取得します
- * @param intval $uid
- * @return number
- */
- public function get_user_lfb($uid) {
- $sql = "sz_common_member_count から extcredits2 を選択 ";
- $sql .= " ここで 1 ";
- $sql .= " および uid='$uid' ";
- return intval ( DB::result_first ( $sql ) );
- }
- /**
- * ログを記録し、ユーザー LIF コインを更新します
- * @param intval $uid
- * @param intval $r 戻り値
- * @param intval $logid
- * @param intval $lotteryid
- */
- プライベート関数 Credit($uid, $result, $logid = 0, $lotteryid = 0,$hao=0) {
- $data = array();
- if ($lotteryid > 0) {
- $data ['lotteryid'] = $lotteryid;
- $data ['iswin'] = 1;
- }
- $data ['結果'] = $結果;
- $data ['ハオ'] = $ハオ;
- $data ['HTTP_REFERER'] = $_SERVER['HTTP_REFERER'];
- DB::Update ( $this->lottery_log, $data, " logid='$logid' " );
- if (L_LFB > 0) {
- $sql = 'UPDATE sz_common_member_count SET extcredits2=extcredits2-' . L_LFB 。 ' WHERE uid=' 。 $uid;
- DB::クエリ ( $sql );
- $this->credit_log ( $uid, 'reduce', L_LFB, 1, '积分清零活' );
- }
- }
- /**
- *携帯電話番号の確認
- */
- プライベート関数 check_tel($tel){
- $ Different_network=table_sub::get_ Different_network();
- if (!preg_match("/$ Different_network/",$tel)) {
- return false;
- }
- true を返します。
- }
- /**
- * ストアド プロシージャのリンク
- */
- private $StoreProcs;
- /**
- * Laifu Coin ログ ストアド プロシージャ
- * @param intval $uid
- * @param string $op 追加して消費量を削減します
- * @param intval $creditvalue Laifu Coin
- * @param intval $credittype 1 Laifu Coin 2 Laifu Coin Click
- * @param string $oreason の説明
- */
- プライベート関数credit_log($uid, $op, $creditvalue, $credittype, $oreason) {
- if (! $this->StoreProcs) {
- $this->StoreProcs =新しい StoreProcs ();
- }
- //调用存储过程
- $this->StoreProcs->query ( "call app_credit_log($uid,'$op','$credittype',1,$creditvalue,'$oreason')" );
- }
-
- }
复制代
三、调用:
-
- $dzp=new lib_dzp_lottery();
- $u=array('uid'=>$_G ['uid'],'tel'=>$_G ['tel'],'ip'=> $_G ['clientip']);
- $dzp->load_setting();
- $dzp->show($dzp->check($u));
- ?>
复制發
|