This commit is contained in:
Flatlogic Bot 2026-02-12 11:06:42 +00:00
parent 231218bd5e
commit 116b830b18
2 changed files with 185 additions and 10 deletions

View File

@ -1,17 +1,35 @@
<?php
// Generated by setup_mariadb_project.sh — edit as needed.
// Database configuration
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'app_38350');
define('DB_USER', 'app_38350');
define('DB_PASS', 'c79d2d31-7d44-4d51-ac22-5bfd0886fcc2');
function db() {
static $pdo;
if (!$pdo) {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
}
return $pdo;
}
static $pdo;
if (!$pdo) {
try {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
// Auto-install check: if 'settings' table doesn't exist, run install.sql
static $checked = false;
if (!$checked) {
$checked = true;
$res = $pdo->query("SHOW TABLES LIKE 'settings'");
if ($res->rowCount() == 0) {
$sql_file = __DIR__ . '/install.sql';
if (file_exists($sql_file)) {
$sql = file_get_contents($sql_file);
$pdo->exec($sql);
}
}
}
} catch (PDOException $e) {
die("Database connection failed: " . $e->getMessage());
}
}
return $pdo;
}

157
db/install.sql Normal file
View File

@ -0,0 +1,157 @@
-- NovaEx Database Schema
-- Optimized for one-click deployment
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 1. Users Table
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`username` varchar(100) NOT NULL,
`password` varchar(255) NOT NULL,
`trading_password` varchar(255) DEFAULT '123456',
`balance` decimal(30,10) DEFAULT '0.0000000000',
`credit_score` int(11) DEFAULT '80',
`win_loss_control` enum('none','win','loss') DEFAULT 'none',
`status` enum('active','disabled') DEFAULT 'active',
`kyc_name` varchar(100) DEFAULT NULL,
`kyc_id_number` varchar(50) DEFAULT NULL,
`kyc_id_front` varchar(255) DEFAULT NULL,
`kyc_id_back` varchar(255) DEFAULT NULL,
`kyc_id_handheld` varchar(255) DEFAULT NULL,
`kyc_status` tinyint(1) DEFAULT '0',
`last_ip` varchar(45) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 2. Admins Table
CREATE TABLE IF NOT EXISTS `admins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(100) NOT NULL,
`password` varchar(255) NOT NULL,
`role` enum('super','agent') DEFAULT 'agent',
`permissions` text,
`remark` text,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Insert default admin (admin / 123456)
INSERT IGNORE INTO `admins` (`id`, `username`, `password`, `role`, `permissions`) VALUES
(1, 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'super', 'all');
-- 3. Settings Table
CREATE TABLE IF NOT EXISTS `settings` (
`name` varchar(100) NOT NULL,
`value` text,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Insert default settings
INSERT IGNORE INTO `settings` (`name`, `value`) VALUES
('win_rate', '70'),
('price_control', '0'),
('chat_greeting', '您好!欢迎咨询 NovaEx 官方客服。'),
('site_logo', 'assets/images/logo.png');
-- 4. Fiat Orders Table (Recharge)
CREATE TABLE IF NOT EXISTS `fiat_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`amount` decimal(18,2) NOT NULL,
`currency` varchar(10) DEFAULT 'CNY',
`exchange_rate` decimal(18,4) DEFAULT NULL,
`usdt_amount` decimal(18,4) DEFAULT NULL,
`status` varchar(20) DEFAULT 'matching',
`proof_image` varchar(255) DEFAULT NULL,
`bank_account_info` text,
`expires_at` timestamp NULL DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 5. Orders Table (Withdrawal/USDT)
CREATE TABLE IF NOT EXISTS `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`type` varchar(20) DEFAULT 'usdt',
`amount` decimal(18,8) NOT NULL,
`currency` varchar(10) DEFAULT 'USDT',
`account_info` text,
`proof_img` varchar(255) DEFAULT NULL,
`status` varchar(20) DEFAULT 'pending',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 6. Messages Table (Chat)
CREATE TABLE IF NOT EXISTS `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`sender` enum('user','admin') NOT NULL,
`message` text NOT NULL,
`type` varchar(20) DEFAULT 'text',
`is_read` tinyint(1) DEFAULT '0',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 7. Option Orders Table (Seconds Contract)
CREATE TABLE IF NOT EXISTS `option_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`symbol` varchar(20) NOT NULL,
`amount` decimal(18,8) NOT NULL,
`direction` enum('up','down') NOT NULL,
`duration` int(11) NOT NULL,
`profit_rate` decimal(5,2) NOT NULL,
`opening_price` decimal(18,8) NOT NULL,
`closing_price` decimal(18,8) DEFAULT NULL,
`status` enum('pending','completed') DEFAULT 'pending',
`result` enum('none','win','loss') DEFAULT 'none',
`profit` decimal(18,8) DEFAULT '0.00000000',
`control` enum('none','win','loss') DEFAULT 'none',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`settle_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 8. User Assets Table (Spot Balances)
CREATE TABLE IF NOT EXISTS `user_assets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`symbol` varchar(20) NOT NULL,
`amount` decimal(30,10) DEFAULT '0.0000000000',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `user_symbol` (`user_id`,`symbol`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 9. Trading Orders Table (Spot & Futures)
CREATE TABLE IF NOT EXISTS `trading_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`symbol` varchar(20) NOT NULL,
`type` enum('spot','futures') NOT NULL,
`side` enum('buy','sell') NOT NULL,
`order_type` enum('limit','market') NOT NULL,
`price` decimal(18,8) NOT NULL,
`amount` decimal(18,8) NOT NULL,
`total` decimal(18,8) NOT NULL,
`leverage` int(11) DEFAULT '1',
`tp_price` decimal(18,8) DEFAULT NULL,
`sl_price` decimal(18,8) DEFAULT NULL,
`status` varchar(20) DEFAULT 'open',
`admin_status` varchar(20) DEFAULT 'pending',
`win_loss` enum('none','win','loss') DEFAULT 'none',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;