-
- 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는 app_lib를 확장합니다. {
- /**
- * 경품 목록
- */
- public $lottery = 'activity_lyq_lottery';
- /**
- * 상품 로그 테이블
- */
- public $lottery_log = 'activity_lyq_lottery_log';
- /**
- * n개 경품
- */
- private $level = 배열 ();
- /**
- * 경품 안내
- */
- 비공개 $lotteryArray = array()
- /***
- * 임의의 숫자 끝자리
- */
- 비공개 $max = 30000; *
- * 카테고리 true: 기본값 false: Palm Suzu
- */
- 비공개 $type=true;
- /**
- * 프로페셔널 계정 당첨
- */
- 비공개 $tel_zy=false
- /**
- * 구성 읽기
- */
- 공개 function load_setting() {
- $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);//최소 LIF 코인
- define('L_LFB', $data['l_lfb']);//LIF 코인 줄이기
- define('L_ZY', $data ['l_zy'] ])); //빈 경품 확률
- $host='www.****.com'; //기존 네트워크
- if($_SERVER['HTTP_HOST']= ='221.*** *0'){
- $host='221.*****'; //테스트 머신
- }elseif($_SERVER['HTTP_HOST']=='125. com'){
- $host='125life.com';//Local
- }elseif(strpos($_SERVER['HTTP_HOST'],'192.168.')==0){
- $host =$_SERVER['HTTP_HOST' ].'/125e.com';//Local
- }
- 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 $heimingdan = array()
- /**
- * 상품 구성 읽기
- */
- public function load() {
- $this-> setlottery ();
- $this->heimingdan = getcache ( 'tel', 'blanklist' )
- }
- 비공개 함수 setlottery() {
- $time=strtotime(date('Y-m -d',TIME));
- $sql = " u.*";
- $sql .= ", ( " 에서 COUNT(l.lotteryid) 선택( $this-> ;lottery_log ) . " AS l 여기서 u.lotteryid=l.lotteryid 및 l.isinning='1')as num "
- $sql .= " from " . ) . " AS u ";
- $sql .= " 및 u.isdisable='0' " 및 u.time_start< ='$time' ";
- $sql .= " 및 u.time_end>='$time' ";
- $sql .= " ORDER BY u.listorder ";
- $d = DB: :fetch_all ( $sql );
- $sum = 0;
- foreach ( $d as $r ) {
- $r ['sum_over'] = intval ( $r ['sum'] ) - intval ( $r ['num'] );
- if ( $r ['sum'] > 0) {
- $sum = $r ['sum']
- }
- $r ['msg']=str_replace('{name}', $ r['name'],$r['msg'])
- $this->lotteryArray [$r ['lotteryid']] = $r;
- }
- if($sum< 100) $sum=1000;
- $m = 1; $probability = 0
- $newsum=0; /80% 빈 상금 20% 상
- $this-> ;max = $sum $sum * (L_KONGJIANG/100) / ((100-L_KONGJIANG)/100
- foreach ( $this->lotteryArray $r ) {
- if ($r ['sum '] > 0) {
- $newsum=$r ['sum']
- if($r['probability']> 0){
- $probability=0;
- $ 확률=ceil($r ['sum']*100/$r['probability'])
- if($probability>0); 🎜>$newsum=$probability;
- }
- }
- $this->level [$r ['lotteryid']] ['start'] = $m
- $this-> ;level [$r ['lotteryid']] ['end' ] = $m $newsum
- $m = $m $r ['sum']
- }
- }
- }
- /**
- * 사용자의 경품 당첨 여부 감지 0 참여해 주셔서 감사합니다. 다른 사용자는 경품 데이터를 반환합니다.
- * @param array $user array(uid,tel,ip)
- */
- 공개 함수 검사($user) {
- if (intval ( $user ['uid'] ) < 1) {
- //로그인되지 않음
- return 0;
- }
- 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; //Raffles 잔액이 부족합니다
- }
-
- $data = array(
- 'uid' => ; $user ['uid'],
- 'tel' => $user ['tel'],
- 'ip' => $user ['ip'],
- 'addtime' = > time ()
- )
- $logid = DB::insert ( $this->lottery_log, $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->choujiang()
- $this->credit ( $user ['uid'], $lotteryid<1?$ lotteryid:0, $logid, $lotteryid ,$this->hao)
- if ($lotteryid > 0) {
- return $this->lotteryArray [$lotteryid]
- } else {
- return -4;
- }
- //-1개의 상품이 배포되었습니다
- //-이 기간 동안 2개의 상품이 배포되었습니다
- //-3 상품이 배포되지 않았습니다
- // -4 상품에 문제가 있습니다
- //-11 RAF 잔액이 부족합니다
- //-12 아쉽게도 이번에는 아무 것도 그리지 못했습니다!
- //-블랙리스트 13에 아쉽게도 이번에는 아무것도 그리지 않으셨네요!
- //-14 당첨된 전문 계정은 높은 상품에 대해 이야기하는 것이 금지됩니다
- //-15가 yizhong의 총 상품 수를 초과했습니다
- //-16 Zhangsu가 잘못된 휴대폰 번호를 보냈습니다
- //-21 일찍 오셨네요 알겠습니다. 이벤트가 아직 시작되지 않았습니다!
- //-22 이벤트 시간이 지났네요 정말 죄송합니다 감사합니다!
- //-23죄송합니다 지금은 이벤트 시간이 아니고 매일 이벤트 시간입니다
- }
- /**
- * 표시
- * @paramknown_type $data
- */
- 공개행사($data){
- $ok= 0;//3 우승 상
- $zz=0;//룰렛 등급
- $result='';//상품 이름
- $lotteryid=0;//상품 ID
- if(is_array( $data)){
- $ok=3;
- $result=$data['msg']
- $zz=$data['angle'] L_QUANSHU*360; 🎜>$lotteryid= $data['lotteryid'];
- }else{
- $m=''
- switch($data){
- case 0:{
- $m= '먼저 로그인을 해주세요! ';
- }break;
- case -11:{
- $m= 'LIFCO 잔액이 부족합니다! ';
- }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= '안타깝게도 이번에는 아무 것도 그리지 않았습니다!';
- }휴식;
- }
- $result=$m;
- $ok=3;//3中奖
- $zz=360 L_QUANSHU*360;//再接再厉
- }
- header("만료일:1997년 7월 26일 월요일: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;
- /**
- * 추첨이 시작됩니다
- */
- 비공개 함수 choujiang() {
- $j = 0;
- $lotteryid = 0;
- $j = mt_rand(1, $this->max);
- $this->hao=$j;
- foreach ( $this->level as $k => $r ) {
- if ($r ['start'] <= $j && $r ['end'] > $j ) {
- $lotteryid = $k;
- 휴식;
- }
- }
- $d = array(
- 1 => array(
- 'time' => strtotime ( date ( 'Y-m-d 00:00:00', TIME ) ) ,
- 'time_end' => strtotime ( 날짜 ( '연월일 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 ( 날짜 ( 'Y-m-d'.($i 6).':59:59', TIME ) )
- );
- }
- if($lotteryid>0){
- $l=$this->lotteryArray [$lotteryid];
- $sql = "에서 count(*) m 선택 " . DB::table ( $this->lottery_log );
- $sql .= " where lotteryid='$lotteryid' ";
- $s= intval ( DB::result_first ( $sql ) );
- $sum_over=$l['sum']-$s;
- if($sum_over>0){
- //本时段 奖product数
- $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 ,$복권ID);
- if($sum>=$l['time_'.$k]){
- //本时段奖product已玩
- $lotteryid=-2;
- 휴식;
- }
- }elseif ($l['time_'.$k]==0){
- //불发奖품
- $lotteryid=-3;
- 휴식;
- }else{
- //-1 불제제
- }
-
- }
- }
- if($this->tel_zy && $lotteryid>0&&$lotteryid<4 ){
- $lotteryid=-14;
- }
- }else{
- //奖product已发完
- $lotteryid=-1;
- }
- }else{
- //奖product有问题
- $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) {
- 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 번호
- */
- 비공개 함수 get_lottery($uid = 0, $start = 0, $end = 0, $bool = false) {
- $sql = " "에서 count(*) m을 선택합니다. 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 .= " and lotteryid>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
- * @ 반품번호
- */
- 비공개 함수 get_lottery_id($uid = 0, $start = 0, $end = 0, $lotteryid = 0) {
-
- $ sql = "에서 count(*) m 선택 " . 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 .= " and lotteryid='$lotteryid' ";
- }
- if (intval ( $uid ) > 0) {
- $sql .= " and uid='$uid' ";
- }
- return intval( DB::result_first ( $sql ) );
- }
- /**
- * 사용자 LIF 코인 받기
- * @param intval $uid
- * @return number
- */
- 공개 함수 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
- */
- 개인 기능 크레딧($uid, $result, $logid = 0, $lotteryid = 0,$hao=0) {
- $data = 정렬();
- if ($lotteryid > 0) {
- $data ['lotteryid'] = $lotteryid;
- $data ['승리'] = 1;
- }
- $data ['결과'] = $결과;
- $data ['hao'] = $hao;
- $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 . ' 어디에서 uid=' . $uid;
- DB::query( $sql );
- $this->credit_log ( $uid, 'reduce', L_LFB, 1, '积分清零活动' );
- }
- }
- /**
- *휴대폰번호 확인
- */
- 비공개 함수 check_tel($tel){
- $다른_network=table_sub::get_ Different_network();
- if (!preg_match("/$다른_network/",$tel)) {
- false를 반환합니다.
- }
- true를 반환합니다.
- }
- /**
- * 저장 프로시저 링크
- */
- 비공개 $StoreProcs;
- /**
- * Rafflecoin 로그 저장 프로시저
- * @param intval $uid
- * @param string $op 추가로 소비 감소
- * @param intval $creditvalue Rafflecoin
- * @param intval $credittype 1Raffles 코인2Raffles 포인트
- * @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,'$ 이유')" );
- }
-
- }
复代码
三,调用:
-
- $dzp=new lib_dzp_lottery();
- $u=array('uid'=>$_G ['uid'],'tel'=>$_G ['tel'],'ip'=> $_G ['clientip']) ;
- $dzp->load_setting();
- $dzp->show($dzp->check($u));
- ?>
复代码
|