当前位置 博文首页 > 你是人间四月天:php循环生成中奖数据

    你是人间四月天:php循环生成中奖数据

    作者:[db:作者] 时间:2021-09-05 13:11

    $db = Flight::db();
    $prizes = $db->select('tb_luckdraw_prize', ['prize_id', 'all_num'], [
    	'luckdraw_id' => 1,
    	'ORDER' => [
    		'all_num' => 'DESC'
    	]
    ]);
    if(empty($prizes)){
    	return false;
    }
    $prize_num = array_sum(array_column($prizes, 'all_num'));
    $step = floor(1000 / $prize_num);//
    
    $prize_arr = [];
    foreach($prizes as $v){
    	for($i = 0; $i < $v['all_num']; $i++){
    		$prize_arr[] = $v['prize_id'];
    	}
    }
    
    // 循环生成中奖数据
    $insert = [];
    $pStatus = true;
    
    for($i = 0; $i < 1000; $i++){
    	$y = $i%$step;
    
    	if(empty($prize_arr)){
    		break;
    	}
    
    	if($y == 0){
    		$pStatus = true;
    	}
    	
    	if(!$pStatus){
    		continue;
    	}
    	//前5人百分之五,第六人必中奖
    	if($y == $step - 1 || rand(1, 100) < 6){
    
    		$pStatus = false;
    		$insert[] = [
    			'activity_id' => 1,
    			'luckdraw_id' => 1,
    			'prize_id' => array_shift($prize_arr),
    			'place' => $i
    		];
    	}
    }
    
    cs