38239-vm/schema.sql
Flatlogic Bot f1fc7be962 BIT
2026-02-07 06:05:18 +00:00

115 lines
4.6 KiB
SQL

CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(150) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS admins (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(150) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS accounts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
uid VARCHAR(6) UNIQUE NOT NULL,
account_type ENUM('SIMULATED', 'REAL') DEFAULT 'SIMULATED',
balance DECIMAL(30, 8) DEFAULT 0,
frozen_balance DECIMAL(30, 8) DEFAULT 0,
credit_score INT DEFAULT 80,
kyc_status ENUM('UNVERIFIED', 'PENDING', 'VERIFIED', 'REJECTED') DEFAULT 'UNVERIFIED',
win_loss_control INT DEFAULT 0, -- 1: Always Win, -1: Always Loss, 0: Normal
language VARCHAR(10) DEFAULT 'zh-hans',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS site_settings (
id INT AUTO_INCREMENT PRIMARY KEY,
site_name VARCHAR(100) DEFAULT 'BitCrypto',
contact_email VARCHAR(100) DEFAULT 'support@example.com',
deposit_address VARCHAR(255) DEFAULT 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
customer_service_url TEXT,
terms_content TEXT,
privacy_content TEXT,
is_pinning_active BOOLEAN DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS cryptocurrencies (
id INT AUTO_INCREMENT PRIMARY KEY,
symbol VARCHAR(20) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
icon_url TEXT,
current_price DECIMAL(30, 8) DEFAULT 0,
manual_price DECIMAL(30, 8) DEFAULT 0,
change_24h DECIMAL(10, 2) DEFAULT 0,
is_active BOOLEAN DEFAULT TRUE
);
CREATE TABLE IF NOT EXISTS assets (
id INT AUTO_INCREMENT PRIMARY KEY,
account_id INT NOT NULL,
currency VARCHAR(10) NOT NULL,
balance DECIMAL(30, 8) DEFAULT 0,
frozen DECIMAL(30, 8) DEFAULT 0,
UNIQUE KEY account_currency (account_id, currency),
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS orders (
id INT AUTO_INCREMENT PRIMARY KEY,
account_id INT NOT NULL,
symbol VARCHAR(20) DEFAULT 'BTCUSDT',
trade_type ENUM('SPOT', 'CONTRACT') DEFAULT 'SPOT',
side ENUM('BUY', 'SELL') NOT NULL,
order_type ENUM('LIMIT', 'MARKET') NOT NULL,
price DECIMAL(30, 8),
amount DECIMAL(30, 8) NOT NULL,
total_usdt DECIMAL(30, 8),
leverage INT DEFAULT 1,
status ENUM('PENDING', 'PARTIALLY_FILLED', 'FILLED', 'CANCELED') DEFAULT 'PENDING',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS positions (
id INT AUTO_INCREMENT PRIMARY KEY,
account_id INT NOT NULL,
symbol VARCHAR(20) NOT NULL,
side ENUM('LONG', 'SHORT') NOT NULL,
leverage INT DEFAULT 20,
entry_price DECIMAL(30, 8) NOT NULL,
lots DECIMAL(30, 8) NOT NULL,
margin DECIMAL(30, 8) NOT NULL,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS transactions (
id INT AUTO_INCREMENT PRIMARY KEY,
account_id INT NOT NULL,
transaction_type ENUM('deposit', 'withdraw') NOT NULL,
currency VARCHAR(10) DEFAULT 'USDT',
amount DECIMAL(30, 8) DEFAULT 0,
tx_hash VARCHAR(255),
status ENUM('pending', 'completed', 'failed') DEFAULT 'pending',
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
);
-- Seed initial data
INSERT INTO site_settings (site_name, contact_email, deposit_address) VALUES ('BitCrypto', 'support@bitcrypto.com', 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');
INSERT INTO admins (username, password) VALUES ('admin', '$2y$10$vK6.O/M57M.n5oYvT6pXve/tE6Yk.7Zg8XfVv0VzP2/k1e7Y6oM5e'); -- password: admin
INSERT INTO cryptocurrencies (symbol, name, icon_url, current_price, change_24h) VALUES
('BTCUSDT', 'Bitcoin', 'https://cryptologos.cc/logos/bitcoin-btc-logo.png', 45000.00, 1.2),
('ETHUSDT', 'Ethereum', 'https://cryptologos.cc/logos/ethereum-eth-logo.png', 2500.00, -0.5),
('BNBUSDT', 'Binance Coin', 'https://cryptologos.cc/logos/binance-coin-bnb-logo.png', 300.00, 2.1),
('ADAUSDT', 'Cardano', 'https://cryptologos.cc/logos/cardano-ada-logo.png', 0.5, 3.5),
('SOLUSDT', 'Solana', 'https://cryptologos.cc/logos/solana-sol-logo.png', 100.0, 5.0),
('DOGEUSDT', 'Dogecoin', 'https://cryptologos.cc/logos/dogecoin-doge-logo.png', 0.08, -2.0);