private function add_lucky_draw_area($lucky_draw_id) { $prizes = array(1, 2); /** 北上杭昆深广宁苏津成渝 */ $cities = array(array(11, '上海'), array(14, '北京'), array(18, '杭州'), array(40, '昆山'), array(13, '深圳'), array(12, '广州'), array(32, '宁波'), array(19, '苏州'), array(17, '天津'), array(15, '成都'), array(20, '重庆')); foreach ($prizes as $prize_id) { foreach ($cities as $city) { list($city_id, $city_name) = $city; Bll_Cms_LuckyDrawLuckyArea::add_lucky_area($lucky_draw_id, $prize_id, $city_id, $city_name); } } }
/** * 开奖 * * @param $lid * @param $city_id * @param $property * @return array */ public static function calculate_lucky_draw($lid, $city_id, $property, $lucky_draw_times, $lucky_times) { $lucky_draw_prize = Dao_Cms_LuckyDrawPrize::get_prize_list($lid); /** 过滤地区 */ $lucky_draw_prize = Bll_Cms_LuckyDrawLuckyArea::filter_lucky_prize($lucky_draw_prize, $city_id, $lid); /** 过滤积分 */ $lucky_draw_prize = Bll_Cms_LuckyDrawLuckyProperty::filter_lucky_prize($lucky_draw_prize, $lid, $property); if (empty($lucky_draw_prize)) { return array('status' => 0, 'message' => '谢谢参与', 'prize_id' => 0, 'debug' => __CLASS__, 'debug_info' => __LINE__, 'prize_title' => '谢谢参与'); } /** 计算各奖品的中奖区间 */ $max = mt_getrandmax(); $lucky_number = mt_rand() % $max; // 中奖号码 $luck_prize = array(); $start = 0; foreach ($lucky_draw_prize as $prize) { @file_put_contents('/home/www/' . __CLASS__ . '.log', "{$prize['title']}: ", FILE_APPEND); $probability = explode('/', $prize['probability']); if (count($probability) != 2) { continue; } list($dividend, $divisor) = $probability; if ($dividend == 0 || $divisor == 0) { continue; } $probability = $dividend / $divisor; if ($lucky_times == 0 && $prize['mulriple'] == 1) { $probability = $probability * (1 << $lucky_draw_times); } $end = min(floor($max * $probability + $start), $max); @file_put_contents('/home/www/' . __CLASS__ . '.log', "max={$max}\tstart={$start}\tend={$end}\tLucky={$lucky_number}\n", FILE_APPEND); if ($lucky_number >= $start && $lucky_number < $end) { $luck_prize = $prize; break; } $start = $end; } if (empty($luck_prize)) { return array('status' => 0, 'message' => '谢谢参与', 'prize_id' => 0, 'debug' => __CLASS__, 'debug_info' => __LINE__, 'prize_title' => '谢谢参与'); } return array('status' => $luck_prize['id'], 'message' => $luck_prize['title'], 'prize_id' => $luck_prize['prize_id'], 'prize_title' => $luck_prize['title'], 'lucky_prize' => $luck_prize); }