Example #1
0
 public function run()
 {
     if (!$this->settings['lottery_filter']) {
         return false;
     }
     $sql = "SELECT id FROM " . DB_PREFIX . "lottery_filter ";
     $q = $this->db->query($sql);
     while ($r = $this->db->fetch_array($q)) {
         $lottery_id[] = $r['id'];
     }
     if (empty($lottery_id)) {
         return false;
     }
     include_once CUR_CONF_PATH . 'lib/win_info_mode.php';
     $obj = new win_info_mode();
     //循环符合条件活动,整理信息
     foreach ($lottery_id as $key => $val) {
         //查询活动中奖记录
         $sql = "SELECT w.*,p.name,p.type,p.prize FROM " . DB_PREFIX . "win_info w\n\t\t\t\t\tLEFT JOIN " . DB_PREFIX . "prize p \n\t\t\t\t\t\tON w.prize_id = p.id \n\t\t\t\t\tWHERE w.lottery_id = " . $val . " \n\t\t\t\t\t\tAND w.prize_id != '' AND w.status=1 AND w.confirm=1 \n\t\t\t\t\tORDER BY w.create_time DESC LIMIT 0,2";
         $q = $this->db->query($sql);
         $info = array();
         $member_id = array();
         while ($r = $this->db->fetch_array($q)) {
             $r['create_time'] = hg_tran_time_tv($r['create_time']);
             $info[] = $r;
             $member_id[] = $r['member_id'];
         }
         if (empty($info)) {
             continue;
         }
         if (!empty($member_id)) {
             $member_info = $obj->get_memberInfo($member_id);
         }
         $win_info = array();
         foreach ($info as $value) {
             foreach ($value as $k => $v) {
                 if ($k == 'member_id' && $member_info[$v]) {
                     $value['member_name'] = $member_info[$v]['member_name'];
                     $value['phone_num'] = $member_info[$v]['phone_num'];
                     $value['avatar'] = $member_info[$v]['avatar'];
                 }
             }
             $win_info[] = $value;
         }
         if (!empty($win_info)) {
             $win_info = serialize($win_info);
             $sql = "UPDATE " . DB_PREFIX . "lottery_filter SET win_info = '" . $win_info . "' WHERE id = " . $val;
             $this->db->query($sql);
         }
     }
     return true;
 }
Example #2
0
 public function show()
 {
     $link_jump = intval($this->input['link_jump']);
     $user_id = intval($this->user['user_id']);
     if (!$user_id && !$link_jump) {
         $this->errorOutput('登录才能参加活动哦!');
     }
     $week_now = date('w', TIMENOW);
     $hour_now = date('His', TIMENOW);
     if ($week_now === '0') {
         $week_now = 7;
     }
     if ($this->input['sort_id']) {
         $con = ' AND sort_id = ' . $this->input['sort_id'];
     }
     //获取链接
     if ($link_jump) {
         $con .= ' AND link_switch = 1';
         $filed = 'link_switch,link_address,week_day,start_hour,end_hour,name,start_time,brief';
     } else {
         $filed = '*';
     }
     $orderby = ' ORDER BY start_time  DESC,order_id DESC';
     //查找最近的正在进行的活动
     $sql = "SELECT " . $filed . " FROM " . DB_PREFIX . "tv_interact WHERE status = 1 AND start_time <=" . TIMENOW . " AND (end_time+delay_time) > " . TIMENOW . $con . $orderby;
     $q = $this->db->query($sql);
     while ($r = $this->db->fetch_array($q)) {
         //$info[] = $r;
         if ($r['start_hour'] && $r['end_hour'] && ($hour_now > $r['end_hour'] || $hour_now < $r['start_hour'])) {
             continue;
         }
         if ($r['week_day']) {
             $r['week_day'] = explode(',', $r['week_day']);
             if (!empty($r['week_day']) && !in_array($week_now, $r['week_day'])) {
                 continue;
             }
         }
         $data = $r;
         break;
     }
     //hg_pre($info);
     //hg_pre($data,0);
     if ($link_jump) {
         $data_link['link_address'] = $data['link_address'] ? $data['link_address'] : '';
         $data_link['tip'] = $data['brief'] ? $data['brief'] : '';
         $data_link['link_switch'] = $data['link_switch'] ? $data['link_switch'] : '';
         $this->addItem($data_link);
         $this->output();
     }
     //开始的活动
     $start_flag = true;
     //没有在进行的活动,查询即将要开始的最近的活动
     if (!$data) {
         $orderby = ' ORDER BY start_time  ASC LIMIT 0,1';
         $sql = "SELECT * FROM " . DB_PREFIX . "tv_interact WHERE status = 1 AND start_time > " . TIMENOW . " AND (end_time+delay_time) > " . TIMENOW . $con . $orderby;
         $data = $this->db->query_first($sql);
         //未开始的活动
         $start_flag = false;
     }
     //hg_pre($res);
     if (!$data) {
         $data = array();
     } else {
         //正在进行的活动,验证参加活动限制
         if ($start_flag && $data['id']) {
             //限制用户参加活动次数
             if ($data['is_user_limit'] && $data['user_limit_num']) {
                 //查询用户参加此活动次数
                 $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE member_id = " . $user_id . " AND tv_interact_id = " . $data['id'];
                 $res = $this->db->query_first($sql);
                 //达到活动限制次数
                 if ($res['total'] >= $data['user_limit_num']) {
                     $this->errorOutput('您已达到活动参加最大次数!');
                 }
             }
             //有积分限制
             if ($data['score_limit']) {
                 $error_mes = '活动积分已经送完,下一时段活动再来吧!';
                 if ($data['score_min'] <= 0) {
                     if ($data['current_score'] >= $data['score_limit']) {
                         $this->errorOutput($error_mes);
                     }
                 } else {
                     if ($data['current_score'] > $data['score_limit'] - $data['score_min']) {
                         $this->errorOutput($error_mes);
                     }
                 }
             }
             //固定分值
             if ($data['score_min'] == $data['score_max']) {
                 $data['score'] = $data['score_min'];
             } else {
                 $score = mt_rand($data['score_min'], $data['score_max']);
                 if ($data['score_limit']) {
                     $last_score = $data['score_limit'] - $data['current_score'];
                     if ($last_score <= 0) {
                         $this->errorOutput('活动积分已经送完,下一时段活动再来吧!');
                     }
                     if ($data['score_min'] > 0) {
                         //如果随即分值大于  限定分值,返回最小值
                         if ($last_score < $data['score_min']) {
                             $this->errorOutput('活动积分已经送完,下一时段活动再来吧!');
                         }
                     }
                 }
                 $data['score'] = $score;
             }
             if ($data['score'] > 0) {
                 $sql = "UPDATE " . DB_PREFIX . "tv_interact SET ";
                 $sql .= "current_score = current_score + " . $data['score'];
                 $sql .= " WHERE id = " . $data['id'];
                 $this->db->query($sql);
             }
             //记录获奖记录
             $score_data = array('tv_interact_id' => $data['id'], 'member_id' => $user_id, 'red_bag' => $data['score'], 'create_time' => TIMENOW);
             $sql = " INSERT INTO " . DB_PREFIX . "win_info SET ";
             foreach ($score_data as $k => $v) {
                 $sql .= " {$k} = '{$v}',";
             }
             $sql = trim($sql, ',');
             $this->db->query($sql);
             //同步会员积分
             include_once ROOT_PATH . 'lib/class/members.class.php';
             $obj = new members();
             $credit_type = $obj->get_trans_credits_type();
             if (!empty($credit_type) && $data['score'] > 0) {
                 $ac = 'add_' . $credit_type['db_field'];
                 $res = $obj->{$ac}($user_id, $data['score'], $data['id'], APP_UNIQUEID, MOD_UNIQUEID, 'show', '电视互动奖励');
             }
         }
         if (!$data['score']) {
             $data['score'] = 0;
         }
         //开始的活动和未开始的活动都要更新感应人数
         $sql = "UPDATE " . DB_PREFIX . "tv_interact SET sense_num = sense_num + 1";
         if ($data['score'] > 0) {
             //$sql .= ",current_score = current_score + ". $data['score'];
         }
         $sql .= " WHERE id = " . $data['id'];
         $this->db->query($sql);
         if ($data['score'] < 0) {
             $sub_score = intval($data['score']);
             //同步会员积分
             if (!empty($credit_type)) {
                 $ac = 'sub_' . $credit_type['db_field'];
                 $res1 = $obj->{$ac}($user_id, $sub_score, $data['id'], APP_UNIQUEID, MOD_UNIQUEID, 'show', '电视互动扣除');
             }
         }
         //查询活动中奖记录
         if ($this->settings['need_win_info']) {
             $sql = "SELECT * FROM " . DB_PREFIX . "win_info WHERE tv_interact_id = " . $data['id'] . " AND red_bag > 0 ORDER BY create_time DESC LIMIT 0,4";
             $q = $this->db->query($sql);
             $info = array();
             $member_id = array();
             while ($r = $this->db->fetch_array($q)) {
                 $r['create_time'] = hg_tran_time_tv($r['create_time']);
                 if ($r['red_bag']) {
                     $r['red_bag'] = $r['red_bag'] . TV_SCORE_TYPE;
                 }
                 $info[] = $r;
                 $member_id[] = $r['member_id'];
             }
             if (!empty($member_id)) {
                 $member_id = implode(',', $member_id);
                 $member_info = array();
                 $member_info_tmp = array();
                 $member_info_tmp = $obj->get_member_info($member_id);
                 if (!empty($member_info_tmp)) {
                     foreach ($member_info_tmp as $val) {
                         $member_info[$val['member_id']]['avatar'] = $val['avatar'];
                         $member_info[$val['member_id']]['member_name'] = $val['member_name'];
                         $member_info[$val['member_id']]['phone_num'] = $val['mobile'];
                     }
                 }
             }
             if (!empty($info)) {
                 $win_info = array();
                 foreach ($info as $val) {
                     foreach ($val as $k => $v) {
                         if ($k == 'member_id' && $member_info[$v]) {
                             $val['member_name'] = $member_info[$v]['member_name'];
                             $val['phone_num'] = $member_info[$v]['phone_num'];
                             $val['avatar'] = $member_info[$v]['avatar'];
                         }
                     }
                     $win_info[] = $val;
                 }
                 $data['win_info'] = $win_info;
             }
         } else {
             $data['win_info'] = array();
         }
         //感应数+1
         $data['sense_num'] += 1;
         //标识活动开始还是未开始
         $data['start_flag'] = $start_flag;
         if ($data['indexpic']) {
             $data['indexpic'] = unserialize($data['indexpic']);
         }
         if ($data['un_start_icon']) {
             $data['un_start_icon'] = unserialize($data['un_start_icon']);
         }
         if ($data['sense_icon']) {
             $data['sense_icon'] = unserialize($data['sense_icon']);
         }
         if ($data['un_win_icon']) {
             $data['un_win_icon'] = unserialize($data['un_win_icon']);
         }
         if ($data['points_icon']) {
             $data['points_icon'] = unserialize($data['points_icon']);
         }
         if (!$data['brief']) {
             $data['brief'] = '当电视或者广播出现提示时,马上摇动您的手机获取积分换奖品吧!';
         }
         if (!$data['un_start_tip']) {
             $data['un_start_tip'] = '当前游戏未开始';
         }
         if (!$data['un_start_desc']) {
             $data['un_start_desc'] = '请在节目播发时按提示摇一摇';
         }
         if (!$data['sense_tip']) {
             $data['sense_tip'] = '恭喜你!';
         }
         if (!$data['sense_desc']) {
             $data['sense_desc'] = '摇到了';
         }
         $data['scores'] = $data['score'];
         $data['score_type'] = TV_SCORE_TYPE;
         //在获得奖励加上奖励类型
         $data['score'] = $data['score'] . TV_SCORE_TYPE;
         if ($data['scores'] == 0) {
             $data['sense_tip'] = $data['un_win_tip'] ? $data['un_win_tip'] : '很遗憾!';
             $data['sense_desc'] = $data['un_win_desc'] ? $data['un_win_desc'] : '下次再来吧!';
             $data['sense_icon'] = $data['un_win_icon'] ? $data['un_win_icon'] : '';
         } elseif ($data['scores'] < 0) {
             $data['sense_tip'] = $data['points_tip'] ? $data['points_tip'] : '您被扣了' . $data['score'];
             $data['sense_desc'] = $data['points_desc'] ? $data['points_desc'] : '您被扣了' . $data['score'];
             $data['sense_icon'] = $data['points_icon'] ? $data['points_icon'] : '';
         }
     }
     $this->addItem($data);
     $this->output();
 }
Example #3
0
 public function run()
 {
     if (!$this->settings['lottery_filter']) {
         return false;
     }
     $sql = "DELETE FROM " . DB_PREFIX . "lottery_filter ";
     $this->db->query($sql);
     $week_now = date('w', TIMENOW);
     $hour_now = date('His', TIMENOW);
     $day_now = date('d', TIMENOW);
     /*$sql = "SELECT * FROM " . DB_PREFIX . "lottery WHERE 
     			status = 1 AND 
     			time_limit = 1 AND 
     			start_time != 0 AND 
     			end_time != 0 AND 
     			start_time <=" . TIMENOW . " AND 
     			end_time > " .TIMENOW . " 
     			OR (time_limit = 0 AND 
     			status = 1) 	
     		ORDER BY order_id DESC";*/
     $sql = "SELECT * FROM " . DB_PREFIX . "lottery WHERE status = 1 ORDER BY order_id DESC";
     $q = $this->db->query($sql);
     while ($r = $this->db->fetch_array($q)) {
         if ($r['time_limit'] && ($hour_now > $r['end_hour'] || $hour_now < $r['start_hour'])) {
             //continue;
         }
         if ($r['cycle_type'] && $r['cycle_value']) {
             //$r['cycle_value'] = explode(',', $r['cycle_value']);
             if ($r['cycle_type'] == 1 && !in_array($week_now, $r['cycle_value'])) {
                 //continue;
             } else {
                 if ($r['cycle_type'] == 2 && !in_array($day_now, $r['cycle_value'])) {
                     //continue;
                 }
             }
         }
         if ($r['feedback']) {
             $r['feedback'] = unserialize($r['feedback']);
         }
         $r['start_times'] = $r['start_time'];
         $r['end_times'] = $r['end_time'];
         $lottery_id[] = $r['id'];
         $lottery_info[$r['id']] = $r;
     }
     if (empty($lottery_info)) {
         return false;
     }
     $lottery_ids = implode(',', $lottery_id);
     //获取图片信息
     $sql = 'SELECT id,host,dir,filepath,filename FROM ' . DB_PREFIX . "materials  WHERE cid IN ({$lottery_ids})";
     $q = $this->db->query($sql);
     $indexpic = $pic_info = array();
     while ($row = $this->db->fetch_array($q)) {
         if (!$row['cid']) {
             $indexpic[$row['id']] = $row;
             continue;
         }
         $pic_info[$row['cid']][$row['id']] = $row;
     }
     //查询奖项
     /*$sql = 'SELECT p.*,m.host,m.dir,m.filepath,m.filename FROM '.DB_PREFIX."prize p  
     				LEFT JOIN " . DB_PREFIX . "materials m 
     					ON p.indexpic_id = m.id 
     				WHERE p.lottery_id IN ({$lottery_ids})";
     		$q = $this->db->query($sql);
     		
     		
     		$prize = array();
     		while($row = $this->db->fetch_array($q))
     		{			
     			$prize[$row['lottery_id']][] = $row;
     		}*/
     //hg_pre($lottery_info);
     include_once CUR_CONF_PATH . 'lib/win_info_mode.php';
     $obj = new win_info_mode();
     //循环符合条件活动,整理信息
     foreach ($lottery_info as $key => $val) {
         if ($pic_info[$key]) {
             $val['pic'] = $pic_info[$key];
         } else {
             $val['pic'] = array();
         }
         if ($indexpic[$val['indexpic_id']]) {
             $val['indexpic'] = $indexpic[$val['indexpic_id']];
         } else {
             $val['indexpic'] = array();
         }
         //查询活动中奖记录
         $sql = "SELECT w.*,p.name,p.type,p.prize FROM " . DB_PREFIX . "win_info w\n\t\t\t\t\tLEFT JOIN " . DB_PREFIX . "prize p \n\t\t\t\t\t\tON w.prize_id = p.id \n\t\t\t\t\tWHERE w.lottery_id = " . $key . " \n\t\t\t\t\t\tAND w.prize_id != '' AND w.status=1 AND w.confirm=1 \n\t\t\t\t\tORDER BY w.create_time DESC LIMIT 0,2";
         $q = $this->db->query($sql);
         $info = array();
         $member_id = array();
         while ($r = $this->db->fetch_array($q)) {
             $r['create_time'] = hg_tran_time_tv($r['create_time']);
             $info[] = $r;
             $member_id[] = $r['member_id'];
         }
         if (!empty($member_id)) {
             $member_info = $obj->get_memberInfo($member_id);
         }
         $win_info = array();
         if (!empty($info) && $member_info) {
             foreach ($info as $value) {
                 foreach ($value as $k => $v) {
                     if ($k == 'member_id' && $member_info[$v]) {
                         $value['member_name'] = $member_info[$v]['member_name'];
                         $value['phone_num'] = $member_info[$v]['phone_num'];
                         $value['avatar'] = $member_info[$v]['avatar'];
                     }
                 }
                 $win_info[] = $value;
             }
         }
         $val['win_info'] = $win_info;
         //活动奖品可以通过mamcache写入缓存
         if ($prize[$key]) {
             //$val['prize'] = $prize[$key];
         } else {
             //$val['prize'] = array();
         }
         $sql = "INSERT INTO " . DB_PREFIX . "lottery_filter SET id=" . $val['id'] . ",sort_id = " . $val['sort_id'] . ",order_id = " . $val['order_id'] . ",content='" . serialize($val) . "'";
         $this->db->query($sql);
         //$data[] = $val;
     }
     //hg_pre($data,0);
     return true;
 }
Example #4
0
 public function lottery()
 {
     $id = intval($this->input['id']);
     if (!$id) {
         return false;
     }
     $data = $this->mode->detail($id);
     //查询活动中奖记录
     $sql = "SELECT w.*,p.name,p.type,p.prize FROM " . DB_PREFIX . "win_info w\n\t\t\t\tLEFT JOIN " . DB_PREFIX . "prize p \n\t\t\t\t\tON w.prize_id = p.id \n\t\t\t\tWHERE w.lottery_id = " . $data['id'] . " \n\t\t\t\t\tAND w.prize_id != '' \n\t\t\t\tORDER BY w.create_time DESC LIMIT 0,2";
     $q = $this->db->query($sql);
     $info = array();
     $member_id = array();
     while ($r = $this->db->fetch_array($q)) {
         $r['create_time'] = hg_tran_time_tv($r['create_time']);
         $info[] = $r;
         $member_id[] = $r['member_id'];
     }
     if (!empty($member_id)) {
         include_once CUR_CONF_PATH . 'lib/win_info_mode.php';
         $obj = new win_info_mode();
         $member_info = $obj->get_memberInfo($member_id);
     }
     $arr = $prize = $award = array();
     if (!empty($info) && $member_info) {
         $win_info = array();
         foreach ($info as $val) {
             foreach ($val as $k => $v) {
                 if ($k == 'member_id' && $member_info[$v]) {
                     $val['member_name'] = $member_info[$v]['member_name'];
                     $val['phone_num'] = $member_info[$v]['phone_num'];
                     $val['avatar'] = $member_info[$v]['avatar'];
                 }
             }
             $win_info[] = $val;
         }
         $award['win_info'] = $win_info;
     }
     $feedback = $data['feedback'];
     $prize_arr = $data['prize'];
     //unset($data['prize'],$data['feedback']);
     foreach ($prize_arr as $key => $val) {
         $chance = array();
         $chance = explode('/', $val['chance']);
         $arr[$val['id']] = $chance[0];
         if (!$sum) {
             $sum = $chance[1];
         }
     }
     $sum = $sum ? $sum : 1000;
     $prize_id = get_rand($arr, $sum);
     //根据概率获取奖项id
     if ($prize_id) {
         $prize = $prize_arr[$prize_id];
         $prize_indexpic = array('host' => $prize['host'], 'dir' => $prize['dir'], 'filepath' => $prize['filepath'], 'filename' => $prize['filename']);
         $award['id'] = $prize_id;
         //奖品名称
         $award['prize'] = $prize['prize'];
         //奖品名称
         $award['name'] = $prize['name'];
         //奖项名称
         $award['tip'] = $prize['tip'];
         //奖品名称
         $award['prize_indexpic'] = $prize_indexpic;
         //奖品索引图
     } else {
         $award['id'] = 0;
         //奖品id
         $feedback_count = count($feedback);
         $rand_num = mt_rand(0, $feedback_count - 1);
         $award['tip'] = $feedback[$rand_num];
         //奖品名称
         $award['name'] = '谢谢参与';
         //奖项名称
     }
     $this->addItem($award);
     $this->output();
 }