111
This commit is contained in:
10
sql/migrate_profit_schedule.sql
Normal file
10
sql/migrate_profit_schedule.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
-- 迁移现有 profit_schedule 数据到 coin_profit_schedule 表
|
||||
-- 当前 AMZE(coin_id=7) 的数据格式为 "2026-04-20:5.00\n2026-04-21:5.00..."
|
||||
|
||||
INSERT IGNORE INTO coin_profit_schedule (coin_id, profit_date, profit_per_thousand, status, admin_id, create_time)
|
||||
VALUES
|
||||
(7, '2026-04-20', 5.00, 0, NULL, NOW()),
|
||||
(7, '2026-04-21', 5.00, 0, NULL, NOW()),
|
||||
(7, '2026-04-22', 5.00, 0, NULL, NOW()),
|
||||
(7, '2026-04-23', 6.00, 0, NULL, NOW()),
|
||||
(7, '2026-04-24', 4.00, 0, NULL, NOW());
|
||||
39
sql/migrate_simulation_v3.sql
Normal file
39
sql/migrate_simulation_v3.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
-- =============================================
|
||||
-- 交易模拟引擎数据库迁移
|
||||
-- =============================================
|
||||
|
||||
-- 1. coin表新增模拟引擎配置字段
|
||||
ALTER TABLE coin ADD COLUMN volatility_min DECIMAL(8,6) DEFAULT 0.000100 COMMENT '最小波动率(每tick)';
|
||||
ALTER TABLE coin ADD COLUMN volatility_max DECIMAL(8,6) DEFAULT 0.003000 COMMENT '最大波动率(每tick)';
|
||||
ALTER TABLE coin ADD COLUMN tick_interval_ms INT DEFAULT 3000 COMMENT '报价刷新间隔(毫秒)';
|
||||
ALTER TABLE coin ADD COLUMN simulation_enabled TINYINT DEFAULT 1 COMMENT '是否启用模拟:0否1是';
|
||||
|
||||
-- 2. Java实体已有但DB缺失的字段
|
||||
ALTER TABLE coin ADD COLUMN trade_start_time VARCHAR(10) DEFAULT NULL COMMENT '交易开始时间HH:mm';
|
||||
ALTER TABLE coin ADD COLUMN trade_end_time VARCHAR(10) DEFAULT NULL COMMENT '交易结束时间HH:mm';
|
||||
ALTER TABLE coin ADD COLUMN max_change_percent DECIMAL(6,2) DEFAULT 10.00 COMMENT '日最大涨跌幅%';
|
||||
ALTER TABLE coin ADD COLUMN circulating_supply DECIMAL(20,4) DEFAULT NULL COMMENT '流通量';
|
||||
|
||||
-- 3. 初始化各币种模拟配置
|
||||
UPDATE coin SET volatility_min=0.000100, volatility_max=0.002000, tick_interval_ms=3000 WHERE code='BTC';
|
||||
UPDATE coin SET volatility_min=0.000200, volatility_max=0.003000, tick_interval_ms=3000 WHERE code='ETH';
|
||||
UPDATE coin SET volatility_min=0.000300, volatility_max=0.005000, tick_interval_ms=2500 WHERE code='SOL';
|
||||
UPDATE coin SET volatility_min=0.000500, volatility_max=0.008000, tick_interval_ms=2000 WHERE code='DOGE';
|
||||
UPDATE coin SET volatility_min=0.000200, volatility_max=0.004000, tick_interval_ms=2500 WHERE code='XRP';
|
||||
UPDATE coin SET simulation_enabled=0 WHERE code='USDT';
|
||||
|
||||
-- 4. 初始化24h统计数据(基于当前价格)
|
||||
UPDATE coin SET high_24h = price, low_24h = price, volume_24h = 0, change_24h = 0 WHERE code != 'USDT';
|
||||
|
||||
-- =============================================
|
||||
-- V3: 交易时段 + 目标价格范围
|
||||
-- =============================================
|
||||
|
||||
-- 5. coin表新增交易时段和目标价格字段
|
||||
ALTER TABLE coin ADD COLUMN trade_start_am VARCHAR(5) DEFAULT '09:00' COMMENT '上午开盘时间(HH:mm)';
|
||||
ALTER TABLE coin ADD COLUMN trade_end_am VARCHAR(5) DEFAULT '12:00' COMMENT '上午收盘时间(HH:mm)';
|
||||
ALTER TABLE coin ADD COLUMN trade_start_pm VARCHAR(5) DEFAULT '13:00' COMMENT '下午开盘时间(HH:mm)';
|
||||
ALTER TABLE coin ADD COLUMN trade_end_pm VARCHAR(5) DEFAULT '17:00' COMMENT '下午收盘时间(HH:mm)';
|
||||
ALTER TABLE coin ADD COLUMN target_low DECIMAL(20,8) DEFAULT NULL COMMENT '今日目标最低价';
|
||||
ALTER TABLE coin ADD COLUMN target_high DECIMAL(20,8) DEFAULT NULL COMMENT '今日目标最高价';
|
||||
ALTER TABLE coin ADD COLUMN target_close DECIMAL(20,8) DEFAULT NULL COMMENT '今日目标收盘价';
|
||||
15
sql/patch_coin_profit_schedule.sql
Normal file
15
sql/patch_coin_profit_schedule.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- 盈利计划独立表
|
||||
CREATE TABLE IF NOT EXISTS coin_profit_schedule (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
coin_id bigint(20) NOT NULL COMMENT '币种ID',
|
||||
profit_date date NOT NULL COMMENT '盈利计划日期',
|
||||
profit_per_thousand decimal(10,2) NOT NULL COMMENT '每1000U盈利金额',
|
||||
status tinyint(1) NOT NULL DEFAULT 0 COMMENT '0-待执行 1-已执行 2-已取消',
|
||||
actual_profit_rate decimal(12,8) DEFAULT NULL COMMENT '实际执行比率(自动回填)',
|
||||
admin_id bigint(20) DEFAULT NULL COMMENT '操作管理员',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_coin_date (coin_id, profit_date),
|
||||
KEY idx_profit_date (profit_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台代币盈利计划表';
|
||||
2
sql/patch_order_trade_cost_price.sql
Normal file
2
sql/patch_order_trade_cost_price.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- 给交易订单表添加成本价字段(卖出时记录当时的avgPrice)
|
||||
ALTER TABLE order_trade ADD COLUMN `cost_price` decimal(20,8) DEFAULT NULL COMMENT '卖出时的成本价(买入加权平均价)' AFTER `amount`;
|
||||
16
sql/patch_p0_indexes.sql
Normal file
16
sql/patch_p0_indexes.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
-- ============================================
|
||||
-- P0 性能优化:关键复合索引
|
||||
-- 执行环境:所有环境(dev/prd)
|
||||
-- ============================================
|
||||
|
||||
-- 限价单撮合查询(每3秒执行一次)
|
||||
-- 对应查询:WHERE coin_code=? AND order_type=2 AND status=0 ORDER BY create_time ASC
|
||||
ALTER TABLE order_trade ADD INDEX idx_coin_type_status_time (coin_code, order_type, status, create_time);
|
||||
|
||||
-- 资金流水查询(资产页、福利查询)
|
||||
-- 对应查询:WHERE user_id=? AND flow_type=? ORDER BY create_time DESC
|
||||
ALTER TABLE account_flow ADD INDEX idx_user_flow_type_time (user_id, flow_type, create_time);
|
||||
|
||||
-- 盈亏日志按用户+类型查询
|
||||
-- 对应查询:WHERE user_id=? AND type=?
|
||||
ALTER TABLE user_profit_log ADD INDEX idx_user_type (user_id, type);
|
||||
4
sql/patch_sys_config_data.sql
Normal file
4
sql/patch_sys_config_data.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- 插入客服联系配置项(如果不存在)
|
||||
INSERT INTO sys_config (config_key, config_value, config_desc)
|
||||
VALUES ('customer_service_contact', '', '客服联系账号')
|
||||
ON DUPLICATE KEY UPDATE config_key = config_key;
|
||||
2
sql/patch_user_auto_increment.sql
Normal file
2
sql/patch_user_auto_increment.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- 用户ID从100000开始
|
||||
ALTER TABLE sys_user AUTO_INCREMENT = 100000;
|
||||
14
sql/patch_user_profit_log.sql
Normal file
14
sql/patch_user_profit_log.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
-- 用户盈亏日志表:每次卖出/领福利时记录实际盈亏金额
|
||||
CREATE TABLE user_profit_log (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
user_id bigint(20) NOT NULL COMMENT '用户ID',
|
||||
profit_date date NOT NULL COMMENT '盈亏日期(北京时间)',
|
||||
amount decimal(20,8) NOT NULL COMMENT '盈亏金额(正=盈利,负=亏损)',
|
||||
type tinyint(1) NOT NULL COMMENT '类型: 1=交易盈亏 2=福利',
|
||||
coin_code varchar(20) DEFAULT NULL COMMENT '币种代码(交易盈亏时有值)',
|
||||
related_order_no varchar(32) DEFAULT NULL COMMENT '关联订单号',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_user_date (user_id, profit_date),
|
||||
KEY idx_profit_date (profit_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户盈亏日志表';
|
||||
382
sql/prod_init.sql
Normal file
382
sql/prod_init.sql
Normal file
@@ -0,0 +1,382 @@
|
||||
-- =============================================
|
||||
-- Monisuo 虚拟货币模拟交易平台 - 生产环境完整初始化脚本
|
||||
-- 数据库: monisuo
|
||||
-- 日期: 2026-04-20
|
||||
-- 说明: 新环境部署时执行此脚本即可,包含全部表结构和初始数据
|
||||
-- =============================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 1. 用户表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `sys_user`;
|
||||
CREATE TABLE `sys_user` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`username` varchar(50) NOT NULL COMMENT '账号',
|
||||
`password` varchar(100) NOT NULL COMMENT '密码(BCrypt加密)',
|
||||
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
|
||||
`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||||
`kyc_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'KYC状态: 0-未激活 1-已激活',
|
||||
`id_card_front` varchar(255) DEFAULT NULL COMMENT '身份证正面照URL',
|
||||
`id_card_back` varchar(255) DEFAULT NULL COMMENT '身份证反面照URL',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-禁用 1-正常',
|
||||
`level` tinyint(1) NOT NULL DEFAULT '0' COMMENT '用户等级: 0-普通用户 1-会员用户',
|
||||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||||
`last_login_ip` varchar(50) DEFAULT NULL COMMENT '最后登录IP',
|
||||
`token` varchar(500) DEFAULT NULL COMMENT '当前Token',
|
||||
`refresh_token` varchar(512) DEFAULT NULL COMMENT '刷新Token',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`referral_code` varchar(8) DEFAULT NULL COMMENT '推广码',
|
||||
`referred_by` bigint(20) DEFAULT NULL COMMENT '推广人用户ID',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_username` (`username`),
|
||||
UNIQUE KEY `uk_referral_code` (`referral_code`),
|
||||
KEY `idx_referred_by` (`referred_by`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=100000 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 2. 管理员表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `sys_admin`;
|
||||
CREATE TABLE `sys_admin` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`username` varchar(50) NOT NULL COMMENT '账号',
|
||||
`password` varchar(100) NOT NULL COMMENT '密码(BCrypt加密)',
|
||||
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
|
||||
`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',
|
||||
`role` tinyint(1) NOT NULL DEFAULT '2' COMMENT '角色: 1-超级管理员 2-普通管理员 3-财务',
|
||||
`permissions` varchar(500) DEFAULT NULL COMMENT '权限列表(JSON格式)',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-禁用 1-正常',
|
||||
`is_system` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否系统预置: 0-否 1-是',
|
||||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||||
`last_login_ip` varchar(50) DEFAULT NULL COMMENT '最后登录IP',
|
||||
`token` varchar(500) DEFAULT NULL COMMENT '当前Token',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_username` (`username`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员表';
|
||||
|
||||
-- 初始化超级管理员(密码: saw123)
|
||||
INSERT INTO `sys_admin` (`username`, `password`, `nickname`, `role`, `permissions`, `is_system`) VALUES
|
||||
('SupperadminWho1', '$2a$10$mk2IthNSTCQXNtT7AR9Sou3UsZPiPCrqwiJhqKu5mOb8CW0Dqdz2G', '超级管理员1', 1, 'all', 1),
|
||||
('SupperadminWho2', '$2a$10$mk2IthNSTCQXNtT7AR9Sou3UsZPiPCrqwiJhqKu5mOb8CW0Dqdz2G', '超级管理员2', 1, 'all', 1);
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 3. 币种表(含模拟引擎配置字段)
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `coin`;
|
||||
CREATE TABLE `coin` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`code` varchar(20) NOT NULL COMMENT '币种代码(如BTC)',
|
||||
`name` varchar(50) NOT NULL COMMENT '币种名称(如Bitcoin)',
|
||||
`icon` varchar(255) DEFAULT NULL COMMENT '币种图标URL',
|
||||
`price` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '当前价格(USDT)',
|
||||
`initial_price` decimal(20,8) DEFAULT NULL COMMENT '初始价格(首次调价时锁定)',
|
||||
`price_usd` decimal(20,8) DEFAULT NULL COMMENT '美元价格',
|
||||
`price_cny` decimal(20,8) DEFAULT NULL COMMENT '人民币价格',
|
||||
`price_type` tinyint(1) NOT NULL DEFAULT '2' COMMENT '价格类型: 1-实时模拟 2-管理定价',
|
||||
`change_24h` decimal(10,4) DEFAULT '0.0000' COMMENT '24小时涨跌幅(%)',
|
||||
`high_24h` decimal(20,8) DEFAULT NULL COMMENT '24小时最高价',
|
||||
`low_24h` decimal(20,8) DEFAULT NULL COMMENT '24小时最低价',
|
||||
`volume_24h` decimal(20,4) DEFAULT NULL COMMENT '24小时交易量',
|
||||
`market_cap` decimal(20,2) DEFAULT NULL COMMENT '市值',
|
||||
`total_supply` decimal(20,2) DEFAULT NULL COMMENT '总发行量',
|
||||
`circulating_supply` decimal(20,2) DEFAULT NULL COMMENT '流通量',
|
||||
`description` text COMMENT '币种简介',
|
||||
`website` varchar(255) DEFAULT NULL COMMENT '官网链接',
|
||||
`price_scale` int(11) DEFAULT '8' COMMENT '价格小数位',
|
||||
`quantity_scale` int(11) DEFAULT '8' COMMENT '数量小数位',
|
||||
`min_quantity` decimal(20,8) DEFAULT '0.00000001' COMMENT '最小交易数量',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-下架 1-上架',
|
||||
`sort` int(11) DEFAULT '0' COMMENT '排序权重(越大越靠前)',
|
||||
`is_platform` tinyint(1) DEFAULT '0' COMMENT '是否平台代币: 0-否 1-是',
|
||||
`volatility_min` decimal(8,6) DEFAULT '0.000100' COMMENT '最小波动率(每tick)',
|
||||
`volatility_max` decimal(8,6) DEFAULT '0.003000' COMMENT '最大波动率(每tick)',
|
||||
`tick_interval_ms` int(11) DEFAULT '3000' COMMENT '报价刷新间隔(毫秒)',
|
||||
`simulation_enabled` tinyint(1) DEFAULT '0' COMMENT '是否启用模拟引擎: 0-否 1-是',
|
||||
`trade_start_time` varchar(10) DEFAULT NULL COMMENT '交易开始时间(HH:mm)',
|
||||
`trade_end_time` varchar(10) DEFAULT NULL COMMENT '交易结束时间(HH:mm)',
|
||||
`max_change_percent` decimal(6,2) DEFAULT '10.00' COMMENT '日最大涨跌幅(%)',
|
||||
`trade_start_am` varchar(5) DEFAULT '09:00' COMMENT '上午开盘时间(HH:mm)',
|
||||
`trade_end_am` varchar(5) DEFAULT '12:00' COMMENT '上午收盘时间(HH:mm)',
|
||||
`trade_start_pm` varchar(5) DEFAULT '13:00' COMMENT '下午开盘时间(HH:mm)',
|
||||
`trade_end_pm` varchar(5) DEFAULT '17:00' COMMENT '下午收盘时间(HH:mm)',
|
||||
`target_low` decimal(20,8) DEFAULT NULL COMMENT '今日目标最低价',
|
||||
`target_high` decimal(20,8) DEFAULT NULL COMMENT '今日目标最高价',
|
||||
`target_close` decimal(20,8) DEFAULT NULL COMMENT '今日目标收盘价',
|
||||
`profit_schedule` text DEFAULT NULL COMMENT '5天盈利计划JSON',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_code` (`code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='币种表';
|
||||
|
||||
-- 初始化币种数据
|
||||
INSERT INTO `coin` (`code`, `name`, `icon`, `price`, `price_type`, `simulation_enabled`, `is_platform`, `volatility_min`, `volatility_max`, `tick_interval_ms`, `description`, `status`, `sort`) VALUES
|
||||
('BTC', 'Bitcoin', '/static/coin/btc.png', 67000.00000000, 1, 1, 0, 0.000100, 0.002000, 3000, '比特币(Bitcoin)是一种点对点的电子现金系统,由中本聪于2008年提出。', 1, 100),
|
||||
('ETH', 'Ethereum', '/static/coin/eth.png', 3400.00000000, 1, 1, 0, 0.000200, 0.003000, 3000, '以太坊(Ethereum)是一个开源的区块链平台,支持智能合约功能。', 1, 99),
|
||||
('SOL', 'Solana', '/static/coin/sol.png', 170.00000000, 1, 1, 0, 0.000300, 0.005000, 2500, 'Solana是一个高性能区块链平台,旨在支持去中心化应用的大规模采用。', 1, 98),
|
||||
('USDT', 'Tether', '/static/coin/usdt.png', 1.00000000, 2, 0, 0, 0.000100, 0.003000, 3000, '泰达币(USDT)是一种与美元挂钩的稳定币。', 1, 97),
|
||||
('DOGE', 'Dogecoin', '/static/coin/doge.png', 0.15000000, 2, 0, 0, 0.000500, 0.008000, 2000, '狗狗币(Dogecoin)是一种基于Scrypt算法的加密货币。', 1, 96),
|
||||
('XRP', 'Ripple', '/static/coin/xrp.png', 0.50000000, 2, 0, 0, 0.000200, 0.004000, 2500, '瑞波币(XRP)是Ripple网络的原生加密货币。', 1, 95);
|
||||
|
||||
-- 初始化24h统计数据
|
||||
UPDATE `coin` SET `high_24h` = `price`, `low_24h` = `price`, `volume_24h` = 0, `change_24h` = 0 WHERE `code` != 'USDT';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 4. K线蜡烛数据表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `coin_kline`;
|
||||
CREATE TABLE `coin_kline` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`coin_code` varchar(20) NOT NULL COMMENT '币种代码',
|
||||
`interval` varchar(5) NOT NULL COMMENT '周期: 15m/1h/4h/1d/1M',
|
||||
`open_time` bigint(20) NOT NULL COMMENT '开盘时间戳(ms)',
|
||||
`open_price` decimal(20,8) NOT NULL,
|
||||
`high_price` decimal(20,8) NOT NULL,
|
||||
`low_price` decimal(20,8) NOT NULL,
|
||||
`close_price` decimal(20,8) NOT NULL,
|
||||
`volume` decimal(20,4) DEFAULT '0.0000' COMMENT '模拟成交量',
|
||||
`close_time` bigint(20) NOT NULL COMMENT '收盘时间戳(ms)',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_coin_interval_open` (`coin_code`, `interval`, `open_time`),
|
||||
KEY `idx_coin_interval_close` (`coin_code`, `interval`, `close_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='K线蜡烛数据表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 5. 资金账户表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `account_fund`;
|
||||
CREATE TABLE `account_fund` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`balance` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT 'USDT余额',
|
||||
`frozen` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '冻结金额',
|
||||
`total_deposit` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '累计充值',
|
||||
`total_withdraw` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '累计提现',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_id` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资金账户表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 6. 交易账户表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `account_trade`;
|
||||
CREATE TABLE `account_trade` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`coin_code` varchar(20) NOT NULL COMMENT '币种代码',
|
||||
`quantity` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '持仓数量',
|
||||
`frozen` decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '冻结数量',
|
||||
`avg_price` decimal(20,8) DEFAULT '0.00000000' COMMENT '平均成本价',
|
||||
`total_buy` decimal(20,8) DEFAULT '0.00000000' COMMENT '累计买入数量',
|
||||
`total_sell` decimal(20,8) DEFAULT '0.00000000' COMMENT '累计卖出数量',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_coin` (`user_id`, `coin_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易账户表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 7. 交易订单表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `order_trade`;
|
||||
CREATE TABLE `order_trade` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`order_no` varchar(32) NOT NULL COMMENT '订单号',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`coin_code` varchar(20) NOT NULL COMMENT '交易币种代码',
|
||||
`direction` tinyint(1) NOT NULL COMMENT '交易方向: 1-买入 2-卖出',
|
||||
`order_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '订单类型: 1-市价 2-限价',
|
||||
`price` decimal(20,8) NOT NULL COMMENT '成交价格',
|
||||
`quantity` decimal(20,8) NOT NULL COMMENT '成交数量',
|
||||
`amount` decimal(20,8) NOT NULL COMMENT '成交金额(USDT)',
|
||||
`cost_price` decimal(20,8) DEFAULT NULL COMMENT '卖出时的成本价(买入加权平均价)',
|
||||
`fee` decimal(20,8) DEFAULT '0.00000000' COMMENT '手续费',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-委托中 1-已成交 2-失败 3-已取消',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_coin_code` (`coin_code`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_user_dir_status_time` (`user_id`, `direction`, `status`, `create_time`),
|
||||
KEY `idx_status_create_time` (`status`, `create_time`),
|
||||
KEY `idx_coin_type_status_time` (`coin_code`, `order_type`, `status`, `create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 8. 充提订单表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `order_fund`;
|
||||
CREATE TABLE `order_fund` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`order_no` varchar(32) NOT NULL COMMENT '订单号',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`username` varchar(50) NOT NULL COMMENT '用户账号(冗余)',
|
||||
`type` tinyint(1) NOT NULL COMMENT '类型: 1-充值 2-提现',
|
||||
`amount` decimal(20,8) NOT NULL COMMENT '金额(USDT)',
|
||||
`fee` decimal(18,2) DEFAULT '0.00' COMMENT '手续费',
|
||||
`receivable_amount` decimal(18,2) DEFAULT NULL COMMENT '到账金额',
|
||||
`wallet_id` bigint(20) DEFAULT NULL COMMENT '冷钱包ID',
|
||||
`wallet_address` varchar(255) DEFAULT NULL COMMENT '钱包地址(充值地址/提现地址)',
|
||||
`network` varchar(20) DEFAULT NULL COMMENT '提现网络类型(TRC20/ERC20等)',
|
||||
`withdraw_contact` varchar(100) DEFAULT NULL COMMENT '提现联系方式',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '充值: 1-待付款 2-待确认 3-已完成 4-已驳回 5-已取消 | 提现: 1-待审批 2-已出款 3-已驳回 4-已取消 5-待财务审核',
|
||||
`pay_time` datetime DEFAULT NULL COMMENT '用户确认打款时间',
|
||||
`confirm_time` datetime DEFAULT NULL COMMENT '确认/审批时间',
|
||||
`approve_admin_id` bigint(20) DEFAULT NULL COMMENT '审批管理员ID',
|
||||
`approve_admin_name` varchar(50) DEFAULT NULL COMMENT '审批管理员名称',
|
||||
`approve_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`finance_admin_id` bigint(20) DEFAULT NULL COMMENT '财务审批管理员ID',
|
||||
`finance_admin_name` varchar(50) DEFAULT NULL COMMENT '财务审批管理员名称',
|
||||
`finance_approve_time` datetime DEFAULT NULL COMMENT '财务审批时间',
|
||||
`reject_reason` varchar(255) DEFAULT NULL COMMENT '驳回原因',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '用户备注',
|
||||
`admin_remark` varchar(255) DEFAULT NULL COMMENT '管理员备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_type_status_time` (`type`, `status`, `create_time`),
|
||||
KEY `idx_type_time_user` (`type`, `create_time`, `user_id`),
|
||||
KEY `idx_user_status` (`user_id`, `status`),
|
||||
KEY `idx_approve_admin` (`approve_admin_id`),
|
||||
KEY `idx_finance_admin` (`finance_admin_id`),
|
||||
KEY `idx_wallet_id` (`wallet_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='充提订单表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 9. 资金流水表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `account_flow`;
|
||||
CREATE TABLE `account_flow` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`flow_no` varchar(32) NOT NULL COMMENT '流水号',
|
||||
`flow_type` tinyint(1) NOT NULL COMMENT '流水类型: 1-充值 2-提现 3-划转转入 4-划转转出 5-买入 6-卖出 7-福利',
|
||||
`amount` decimal(20,8) NOT NULL COMMENT '变动金额',
|
||||
`balance_before` decimal(20,8) NOT NULL COMMENT '变动前余额',
|
||||
`balance_after` decimal(20,8) NOT NULL COMMENT '变动后余额',
|
||||
`coin_code` varchar(20) DEFAULT 'USDT' COMMENT '相关币种',
|
||||
`related_order_no` varchar(32) DEFAULT NULL COMMENT '关联订单号',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_flow_type` (`flow_type`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_user_flow_type` (`user_id`, `flow_type`),
|
||||
KEY `idx_user_flow_type_time` (`user_id`, `flow_type`, `create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资金流水表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 10. 系统配置表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `sys_config`;
|
||||
CREATE TABLE `sys_config` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`config_key` varchar(100) NOT NULL COMMENT '配置键',
|
||||
`config_value` varchar(500) NOT NULL COMMENT '配置值',
|
||||
`config_desc` varchar(255) DEFAULT NULL COMMENT '配置说明',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_config_key` (`config_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
|
||||
|
||||
-- 初始化系统配置
|
||||
INSERT INTO `sys_config` (`config_key`, `config_value`, `config_desc`) VALUES
|
||||
('withdraw_min', '10', '最小提现金额(USDT)'),
|
||||
('withdraw_max', '100000', '最大单笔提现金额(USDT)'),
|
||||
('withdraw_daily_max', '500000', '每日最大提现金额(USDT)'),
|
||||
('kyc_required', 'true', '交易前是否需要KYC'),
|
||||
('deposit_min', '1000', '最小充值金额(USDT)'),
|
||||
('deposit_max_total', '8000', '累计最大充值金额(USDT)'),
|
||||
('customer_service_contact', '', '客服联系账号');
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 11. 用户自选币种表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `user_favorite`;
|
||||
CREATE TABLE `user_favorite` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`coin_code` varchar(20) NOT NULL COMMENT '币种代码',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_coin` (`user_id`, `coin_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户自选币种表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 12. 冷钱包地址表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `cold_wallet`;
|
||||
CREATE TABLE `cold_wallet` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`name` varchar(50) NOT NULL COMMENT '钱包名称',
|
||||
`address` varchar(255) NOT NULL COMMENT '钱包地址',
|
||||
`network` varchar(20) NOT NULL DEFAULT 'TRC20' COMMENT '网络类型: TRC20/ERC20/BEP20等',
|
||||
`is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认: 0-否 1-是',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-禁用 1-启用',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='冷钱包地址表';
|
||||
|
||||
-- 初始化钱包地址(部署时请替换为真实地址)
|
||||
INSERT INTO `cold_wallet` (`name`, `address`, `network`, `is_default`, `status`) VALUES
|
||||
('USDT-TRC20 主钱包', 'TRX1234567890abcdefghijklmnopqrstuvwxyz1234', 'TRC20', 1, 1),
|
||||
('USDT-ERC20 备用钱包', '0x1234567890abcdef1234567890abcdef12345678', 'ERC20', 0, 1);
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 13. 用户盈亏日志表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `user_profit_log`;
|
||||
CREATE TABLE `user_profit_log` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`profit_date` date NOT NULL COMMENT '盈亏日期(北京时间)',
|
||||
`amount` decimal(20,8) NOT NULL COMMENT '盈亏金额(正=盈利,负=亏损)',
|
||||
`type` tinyint(1) NOT NULL COMMENT '类型: 1=交易盈亏 2=福利',
|
||||
`coin_code` varchar(20) DEFAULT NULL COMMENT '币种代码(交易盈亏时有值)',
|
||||
`related_order_no` varchar(32) DEFAULT NULL COMMENT '关联订单号',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_date` (`user_id`, `profit_date`),
|
||||
KEY `idx_profit_date` (`profit_date`),
|
||||
KEY `idx_user_type` (`user_id`, `type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户盈亏日志表';
|
||||
|
||||
-- ---------------------------------------------
|
||||
-- 14. 平台代币盈利计划表
|
||||
-- ---------------------------------------------
|
||||
DROP TABLE IF EXISTS `coin_profit_schedule`;
|
||||
CREATE TABLE `coin_profit_schedule` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`coin_id` bigint(20) NOT NULL COMMENT '币种ID',
|
||||
`profit_date` date NOT NULL COMMENT '盈利计划日期',
|
||||
`profit_per_thousand` decimal(10,2) NOT NULL COMMENT '每1000U盈利金额',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0-待执行 1-已执行 2-已取消',
|
||||
`actual_profit_rate` decimal(12,8) DEFAULT NULL COMMENT '实际执行比率(自动回填)',
|
||||
`admin_id` bigint(20) DEFAULT NULL COMMENT '操作管理员',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_coin_date` (`coin_id`, `profit_date`),
|
||||
KEY `idx_profit_date` (`profit_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台代币盈利计划表';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
Reference in New Issue
Block a user