Aqui está um exemplo de código para um sistema de bônus de aposta (bet) em diferentes linguagens:
## 1. **JavaScript/Node.js – Sistema de Bônus de Aposta**
“`javascript
class BonusCBet {
constructor() {
this.bonusMultipliers = {
‘small’: 1.1,
‘medium’: 1.25,
‘large’: 1.5,
‘jackpot’: 2.0
};
this.activeBonuses = new Map();
}
// Verificar se o usuário tem direito a bônus
checkBonusEligibility(userId, betAmount) {
const userHistory = this.getUserBetHistory(userId);
// Exemplo de condições para bônus
if (betAmount >= 100) {
return this.bonusMultipliers.large;
} else if (betAmount >= 50) {
return this.bonusMultipliers.medium;
} else if (betAmount >= 10) {
return this.bonusMultipliers.small;
}
return 1.0; // Sem bônus
}
// Aplicar bônus à aposta
applyBonus(userId, betAmount) {
const multiplier = this.checkBonusEligibility(userId, betAmount);
const bonusAmount = betAmount * (multiplier – 1);
const totalWithBonus = betAmount * multiplier;
this.activeBonuses.set(userId, {
originalBet: betAmount,
bonusMultiplier: multiplier,
bonusAmount: bonusAmount,
total: totalWithBonus,
timestamp: new Date()
});
return {
success: true,
originalBet: betAmount,
bonusMultiplier: multiplier,
bonusAmount: bonusAmount,
totalWithBonus: totalWithBonus
};
}
// Verificar bônus ativo
getActiveBonus(userId) {
return this.activeBonuses.get(userId) || null;
}
// Processar vitória com bônus
processWinWithBonus(userId, winMultiplier) {
const bonus = this.activeBonuses.get(userId);
if (!bonus) {
return { success: false, message: “Nenhum bônus ativo” };
}
const totalWin = bonus.total * winMultiplier;
const bonusWin = bonus.bonusAmount * winMultiplier;
// Limpar bônus após uso
this.activeBonuses.delete(userId);
return {
success: true,
originalBet: bonus.originalBet,
bonusMultiplier: bonus.bonusMultiplier,
bonusAmount: bonus.bonusAmount,
totalWin: totalWin,
bonusWin: bonusWin
};
}
getUserBetHistory(userId) {
// Implementar lógica para buscar histórico do usuário
return [];
}
}
// Exemplo de uso
const bonusSystem = new BonusCBet();
// Aplicar bônus
const result = bonusSystem.applyBonus(“user123”, 75);
console.log(result);
“`
## 2. **Python – Sistema de Bônus**
“`python
from datetime import datetime
from typing import Dict, Optional
class BonusBetSystem:
def __init__(self):
self.bonus_tiers = {
‘bronze’: 1.05,
‘silver’: 1.15,
‘gold’: 1.30,
‘platinum’: 1.50
}
self.active_bonuses = {}
self.user_stats = {}
def calculate_bonus_tier(self, user_id: str, bet_amount: float) -> str:
“””Determina o tier de bônus baseado no histórico e valor da aposta”””
user_total_bets = self.user_stats.get(user_id, {}).get(‘total_bets’, 0)
if bet_amount >= 1000 and user_total_bets > 100:
return ‘platinum’
elif bet_amount >= 500:
return ‘gold’
elif bet_amount >= 100:
return ‘silver’
elif bet_amount >= 50:
return ‘bronze’
return ‘none’
def apply_bonus(self, user_id: str, bet_amount: float) -> Dict:
“””Aplica bônus à aposta”””
tier = self.calculate_bonus_tier(user_id, bet_amount)
if tier == ‘none’:
return {
‘bonus_applied’: False,
‘final_amount’: bet_amount
}
multiplier = self.bonus_tiers[tier]
bonus_amount = bet_amount * (multiplier – 1)
self.active_bonuses[user_id] = {
‘original_bet’: bet_amount,
‘tier’: tier,
‘multiplier’: multiplier,
‘bonus_amount’: bonus_amount,
‘timestamp’: datetime.now()
}
return {
‘bonus_applied’: True,
‘tier’: tier,
‘multiplier’: multiplier,
‘bonus_amount’: bonus_amount,
‘original_bet’: bet_amount,
‘final_amount’: bet_amount * multiplier
}
def process_bet_result(self, user_id: str, win: bool, win_multiplier: float = 1.0) -> Dict:
“””Processa o resultado da aposta considerando o bônus”””
if user_id not in self.active_bonuses:
return {‘error’: ‘No active bonus’}
bonus = self.active_bonuses[user_id]
if win:
total_win = bonus[‘original_bet’] * win_multiplier * bonus[‘multiplier’]
bonus_portion = bonus[‘bonus_amount’] * win_multiplier
else:
total_win = 0
bonus_portion = 0
# Atualizar estatísticas
self._update_user_stats(user_id, bonus[‘original_bet’], win)
# Remover bônus após processamento
del self.active_bonuses[user_id]
return {
‘original_bet’: bonus[‘original_bet’],
‘bonus_tier’: bonus[‘tier’],
‘bonus_multiplier’: bonus[‘multiplier’],
‘total_win’: total_win,
‘bonus_contribution’: bonus_portion
}
def _update_user_stats(self, user_id: str, bet_amount: float, win: bool):
“””Atualiza estatísticas do usuário”””
if user_id not in self.user_stats:
self.user_stats[user_id] = {
‘total_bets’: 0,
‘total_wagered’: 0,
‘wins’: 0
}
stats = self.user_stats[user_id]
stats[‘total_bets’] += 1
stats[‘total_wagered’] += bet_amount
if win:
stats[‘wins’] += 1
# Exemplo de uso
if __name__ == “__main__”:
system = BonusBetSystem()
# Aplicar bônus
result = system.apply_bonus(“user001”, 600)
print(“Bonus applied:”, result)
# Processar resultado
win_result = system.process_bet_result(“user001”, True, 2.5)
print(“Win result:”, win_result)
“`
## 3. **PHP – Sistema Simples de Bônus**
“`php
[‘min’ => 10, ‘multiplier’ => 1.1],
‘level2’ => [‘min’ => 50, ‘multiplier’ => 1.25],
‘level3’ => [‘min’ => 100, ‘multiplier’ => 1.5],
‘level4’ => [‘min’ => 500, ‘multiplier’ => 2.0]
];
private $activeBonuses = [];
public function calculateBonus($userId, $betAmount) {
$bonusLevel = $this->determineBonusLevel($betAmount);
if ($bonusLevel === null) {
return [
‘hasBonus’ => false,
‘betAmount’ => $betAmount
];
}
$multiplier = $this->bonusLevels[$bonusLevel][‘multiplier’];
$bonusAmount = $betAmount * ($multiplier – 1);
$this->activeBonuses[$userId] = [
‘level’ => $bonusLevel,
‘multiplier’ => $multiplier,
‘originalBet’ => $betAmount,
‘bonusAmount’ => $bonusAmount,
‘timestamp’ => time()
];
return [
‘hasBonus’ => true,
‘bonusLevel’ => $bonusLevel,
‘multiplier’ => $multiplier,
‘originalBet’ => $betAmount,
‘bonusAmount’ => $bonusAmount,
‘totalWithBonus’ => $betAmount * $multiplier
];
}
private function determineBonusLevel($betAmount) {
foreach ($this->bonusLevels as $level => $data) {
if ($betAmount >= $data[‘min’]) {
$selectedLevel = $level;
}
}
return $selectedLevel ?? null;
}
public function processWinningBet($userId, $winMultiplier) {
if (!isset($this->activeBonuses[$userId])) {
return [‘error’ => ‘No active bonus found’];
}
$bonus = $this->activeBonuses[$userId];
$totalWin = ($bonus[‘originalBet’] * $bonus[‘multiplier’]) * $winMultiplier;
// Limpar bônus após uso
unset($this->activeBonuses[$userId]);
return [
‘success’ => true,
‘originalBet’ => $bonus[‘originalBet’],
‘bonusMultiplier’ => $bonus[‘multiplier’],
‘winMultiplier’ => $winMultiplier,
‘totalWin’ => $totalWin
];
}
}
// Exemplo de uso
$bonusSystem = new BonusCBet();
$bonusResult = $bonusSystem->calculateBonus(“user123”, 150);
print_r($bonusResult);

?>
“`
## 4. **SQL – Estrutura de Banco de Dados**
“`sql
— Tabela de bônus
CREATE TABLE bonus_offers (
id INT PRIMARY KEY AUTO_INCREMENT,
bonus_name VARCHAR(100),
bonus_type ENUM(‘deposit’, ‘bet’, ‘loyalty’),
min_bet_amount DECIMAL(10, 2),
multiplier DECIMAL(5, 2),
max_bonus DECIMAL(10, 2),
wagering_requirement INT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
— Tabela de bônus ativos dos usuários
CREATE TABLE user_active_bonuses (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
bonus_id INT,
original_bet DECIMAL(10, 2),
bonus_amount DECIMAL(10, 2),
multiplier DECIMAL(5, 2),
status ENUM(‘active’, ‘used’, ‘expired’, ‘cancelled’),
expires_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (bonus_id) REFERENCES bonus_offers(id)
);
— Tabela de histórico de bônus
CREATE TABLE bonus_history (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
bonus_id INT,
bet_amount DECIMAL(10, 2),
bonus_amount DECIMAL(10, 2),
total_win DECIMAL(10, 2),
status ENUM(‘won’, ‘lost’, ‘cancelled’),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
“`
## **Recursos Adicionais:**
1. **Recursos de Segurança:**
– Validação de entrada
– Limites de bônus
– Prevenção de abuso
– Verificação de identidade
2. **Funcionalidades Avançadas:**
– Bônus por tempo limitado
– Bônus progressivos
– Bônus de fidelidade
– Bônus sazonais
3. **Boas Práticas:**
– Logs detalhados
– Auditoria de transações
– Conformidade regulatória
– Termos e condições claros
Lembre-se de adaptar o código às regulamentações específicas da sua jurisdição e implementar medidas de segurança adequadas para um sistema de apostas real.


