private function add_lucky_property($lucky_draw_id) { $lucky_properties = array(array(1, 5000, 0), array(2, 5000, 0)); foreach ($lucky_properties as $lucky_property) { list($prize_id, $low, $high) = $lucky_property; Bll_Cms_LuckyDrawLuckyProperty::add_lucky_property($lucky_draw_id, $prize_id, $low, $high); } }
/** * 开奖 * * @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); }