where('currency_code', $currency) ->where('status', 1) ->lockForUpdate() ->first(); if ($pool === null) { return; } if ((int) $item->actual_deduct_amount < (int) $pool->min_bet_amount) { return; } $rate = (float) $pool->contribution_rate; $contrib = (int) floor((int) $item->actual_deduct_amount * $rate); if ($contrib <= 0) { return; } JackpotContribution::query()->create([ 'jackpot_pool_id' => $pool->id, 'draw_id' => $draw->id, 'player_id' => $item->player_id, 'ticket_item_id' => $item->id, 'contribution_amount' => $contrib, 'currency_code' => $currency, ]); $pool->forceFill([ 'current_amount' => (int) $pool->current_amount + $contrib, ])->save(); } }