-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
/meu-sistema-rifa
├── /public # Arquivos públicos (HTML, CSS, JS)
├── /routes # Rotas do backend (Node.js)
├── /views # Templates de páginas (se necessário)
├── /models # Modelos de banco de dados
├── server.js # Arquivo principal do servidor Node.js
└── package.json # Arquivo de dependências do Node.js
mkdir meu-sistema-rifa
cd meu-sistema-rifa
npm init -y
npm install express mysql body-parser
const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyParser.json());
app.use(express.static('public')); // Para servir arquivos HTML, CSS e JS
// Configuração do banco de dados MySQL
const db = mysql.createConnection({
host: 'localhost',
user: 'root', // Mude para seu usuário
password: '', // Mude para sua senha
database: 'rifa_db'
});
db.connect((err) => {
if (err) throw err;
console.log('Conectado ao banco de dados MySQL');
});
// Rota para comprar bilhete
app.post('/comprar', (req, res) => {
const { nome, email } = req.body;
const numeroBilhete = Math.floor(Math.random() * 1000) + 1;
const query = 'INSERT INTO bilhetes (nome, email, numero) VALUES (?, ?, ?)';
db.query(query, [nome, email, numeroBilhete], (err, result) => {
if (err) throw err;
res.send({ message: Bilhete comprado! Seu número é: ${numeroBilhete} });
});
});
// Rota para sortear um vencedor
app.get('/sortear', (req, res) => {
const query = 'SELECT * FROM bilhetes ORDER BY RAND() LIMIT 1';
db.query(query, (err, result) => {
if (err) throw err;
res.send({ message: O vencedor é: ${result[0].nome}, com o número ${result[0].numero} });
});
});
// Iniciar servidor
app.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
CREATE DATABASE rifa_db;
USE rifa_db;
CREATE TABLE bilhetes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
numero INT NOT NULL
);
Sistema de Rifa
Comprar Bilhete <script> document.getElementById('form-rifa').addEventListener('submit', async function(event) { event.preventDefault(); const nome = document.getElementById('nome').value; const email = document.getElementById('email').value; const response = await fetch('/comprar', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ nome, email }) }); const data = await response.json(); document.getElementById('resultado').innerText = data.message; }); </script> node server.js curl http://localhost:3000/sortearValor do bilhete: R$
document.getElementById('preco-bilhete').innerText = '10.00'; // Exemplo de preço const valorBilhete = 10.00; // Valor fixo da rifa, você pode mudar isso dinamicamente depoisapp.post('/comprar', (req, res) => {
const { nome, email } = req.body;
const numeroBilhete = Math.floor(Math.random() * 1000) + 1;
// Aqui você pode adicionar a lógica de pagamento, calculando o valor e integrando com o banco
const query = 'INSERT INTO bilhetes (nome, email, numero, valor) VALUES (?, ?, ?, ?)';
db.query(query, [nome, email, numeroBilhete, valorBilhete], (err, result) => {
if (err) throw err;
res.send({ message: Bilhete comprado por R$${valorBilhete}! Seu número é: ${numeroBilhete} });
});
});

ALTER TABLE bilhetes ADD COLUMN data_sorteio DATETIME;
const dataSorteio = '2024-12-25 18:00:00'; // Definir uma data fixa
app.post('/comprar', (req, res) => {
const { nome, email } = req.body;
const numeroBilhete = Math.floor(Math.random() * 1000) + 1;
const query = 'INSERT INTO bilhetes (nome, email, numero, valor, data_sorteio) VALUES (?, ?, ?, ?, ?)';
db.query(query, [nome, email, numeroBilhete, valorBilhete, dataSorteio], (err, result) => {
if (err) throw err;
res.send({ message: Bilhete comprado por R$${valorBilhete}! Sorteio em: ${dataSorteio}. Seu número é: ${numeroBilhete} });
});
});
O sorteio será realizado em:
<script> document.getElementById('data-sorteio').innerText = '25/12/2024 às 18:00'; </script>npm install stripe
const stripe = require('stripe')('sua-chave-secreta-do-stripe');
app.post('/pagamento', async (req, res) => {
const { valor } = req.body;
try {
const pagamento = await stripe.paymentIntents.create({
amount: valor * 100, // Valor em centavos
currency: 'brl',
payment_method_types: ['pix'],
});
res.send({ clientSecret: pagamento.client_secret });
} catch (err) {
res.status(500).send({ error: err.message });
}
});
