| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- -- ============================================================
- -- 投研平台后端 · 数据库初始化脚本(SQLite)
- -- ============================================================
- -- 适用:Spring Boot 2.7 + Java 8 + SQLite (data/ir.db)
- -- 用法:执行一次本脚本即可完成建表 + 种子数据灌入。
- -- sqlite3 data/ir.db < sql/init.sql
- -- 或:在 sqlite3 交互终端里 .read sql/init.sql
- -- 幂等:所有 DDL/DML 使用 IF NOT EXISTS / OR IGNORE,重复执行安全。
- -- 默认管理员:admin / admin123(BCrypt 哈希见 sys_user 插入行)
- -- ============================================================
- PRAGMA foreign_keys = ON;
- -- ============================================================
- -- 1. 建表
- -- ============================================================
- -- 演示用户表(供 /api/datasource/* 演示接口使用)
- CREATE TABLE IF NOT EXISTS demo_user (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- name TEXT NOT NULL,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 系统用户表
- CREATE TABLE IF NOT EXISTS sys_user (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- username TEXT NOT NULL UNIQUE,
- password TEXT NOT NULL, -- BCrypt 哈希
- nickname TEXT,
- enabled INTEGER NOT NULL DEFAULT 1,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 角色表
- CREATE TABLE IF NOT EXISTS sys_role (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- code TEXT NOT NULL UNIQUE,
- name TEXT NOT NULL,
- description TEXT,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 权限点表(接口权限,与菜单权限解耦)
- CREATE TABLE IF NOT EXISTS sys_permission (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- code TEXT NOT NULL UNIQUE,
- name TEXT NOT NULL,
- description TEXT,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 用户-角色关联
- CREATE TABLE IF NOT EXISTS sys_user_role (
- user_id INTEGER NOT NULL,
- role_id INTEGER NOT NULL,
- PRIMARY KEY (user_id, role_id)
- );
- -- 角色-权限关联
- CREATE TABLE IF NOT EXISTS sys_role_permission (
- role_id INTEGER NOT NULL,
- permission_id INTEGER NOT NULL,
- PRIMARY KEY (role_id, permission_id)
- );
- -- 菜单表(独立菜单权限体系)
- CREATE TABLE IF NOT EXISTS sys_menu (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- parent_id INTEGER, -- NULL = 顶级目录
- name TEXT NOT NULL,
- type TEXT NOT NULL DEFAULT 'menu', -- dir=目录 / menu=菜单
- route TEXT, -- 前端路由 path
- component TEXT, -- 前端组件路径
- icon TEXT, -- 菜单图标(Element Plus)
- sort INTEGER DEFAULT 0, -- 排序号(升序)
- visible INTEGER DEFAULT 1, -- 是否可见
- status INTEGER DEFAULT 1, -- 是否启用
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 角色-菜单关联
- CREATE TABLE IF NOT EXISTS sys_role_menu (
- role_id INTEGER NOT NULL,
- menu_id INTEGER NOT NULL,
- PRIMARY KEY (role_id, menu_id)
- );
- -- ============================================================
- -- 2. 种子数据:角色
- -- ============================================================
- INSERT OR IGNORE INTO sys_role(id, code, name, description) VALUES
- (1, 'ADMIN', '超级管理员', '系统内置,拥有全部权限'),
- (2, 'USER', '普通用户', '系统内置,默认用户角色');
- -- ============================================================
- -- 3. 种子数据:权限点
- -- ============================================================
- INSERT OR IGNORE INTO sys_permission(id, code, name, description) VALUES
- (1, 'user:list', 'user:list', NULL),
- (2, 'user:create', 'user:create', NULL),
- (3, 'user:update', 'user:update', NULL),
- (4, 'user:delete', 'user:delete', NULL),
- (5, 'role:list', 'role:list', NULL),
- (6, 'role:create', 'role:create', NULL),
- (7, 'role:update', 'role:update', NULL),
- (8, 'role:delete', 'role:delete', NULL),
- (9, 'role:assign', 'role:assign', NULL),
- (10, 'permission:list', 'permission:list', NULL),
- (11, 'permission:create','permission:create',NULL),
- (12, 'permission:delete','permission:delete',NULL),
- (13, 'data:query', 'data:query', NULL),
- (14, 'data:write', 'data:write', NULL);
- -- ADMIN 拥有全部权限
- INSERT OR IGNORE INTO sys_role_permission(role_id, permission_id)
- SELECT 1, id FROM sys_permission;
- -- ============================================================
- -- 4. 种子数据:默认管理员账号
- -- ============================================================
- -- 密码:admin123(BCrypt $2a$10$W6qORgtPvZnIj5KMJj0GZu3fYtAqgOUjAl6vQy7wt4kFeYVPVkwti)
- -- 首次部署后请尽快通过 UPDATE sys_user SET password=? WHERE username='admin' 修改。
- INSERT OR IGNORE INTO sys_user(id, username, password, nickname, enabled) VALUES
- (1, 'admin', '$2a$10$W6qORgtPvZnIj5KMJj0GZu3fYtAqgOUjAl6vQy7wt4kFeYVPVkwti', '管理员', 1);
- -- 管理员授予 ADMIN 角色
- INSERT OR IGNORE INTO sys_user_role(user_id, role_id) VALUES (1, 1);
- -- ============================================================
- -- 5. 种子数据:菜单(顶级 + 二级)
- -- ============================================================
- -- 5.1 通用顶级(工作台 / 系统管理 / 数据源演示)
- INSERT OR IGNORE INTO sys_menu(id, parent_id, name, type, route, component, icon, sort) VALUES
- (1, NULL, '工作台', 'menu', '/dashboard', 'dashboard/index', 'HomeFilled', 1),
- (2, NULL, '系统管理', 'dir', NULL, NULL, 'Setting', 1),
- (7, NULL, '数据源演示', 'menu', '/datasource', 'datasource/index', 'Coin', 2);
- -- 5.2 系统管理 → 子菜单
- INSERT OR IGNORE INTO sys_menu(id, parent_id, name, type, route, component, icon, sort) VALUES
- (3, 2, '用户管理', 'menu', '/system/user', 'system/user/index', 'User', 1),
- (4, 2, '角色管理', 'menu', '/system/role', 'system/role/index', 'Avatar', 2),
- (5, 2, '权限管理', 'menu', '/system/permission', 'system/permission/index', 'Key', 3),
- (6, 2, '菜单管理', 'menu', '/system/menu', 'system/menu/index', 'Menu', 4);
- -- 5.3 投研业务 6 个一级目录
- INSERT OR IGNORE INTO sys_menu(id, parent_id, name, type, route, component, icon, sort) VALUES
- (8, NULL, '基本面', 'dir', NULL, NULL, 'TrendCharts', 3),
- (16, NULL, '政策面', 'dir', NULL, NULL, 'Document', 4),
- (17, NULL, '资金面', 'dir', NULL, NULL, 'Money', 5),
- (18, NULL, '债市分析', 'dir', NULL, NULL, 'Tickets', 6),
- (19, NULL, '权益分析', 'dir', NULL, NULL, 'DataLine', 7),
- (20, NULL, '多资产', 'dir', NULL, NULL, 'Grid', 8);
- -- 5.4 基本面 → 7 个二级菜单
- INSERT OR IGNORE INTO sys_menu(id, parent_id, name, type, route, component, icon, sort) VALUES
- (9, 8, 'GDP', 'menu', '/fundamental/gdp', 'fundamental/gdp/index', 'DataAnalysis', 1),
- (10, 8, '投资', 'menu', '/fundamental/investment', 'fundamental/investment/index', 'Coin', 2),
- (11, 8, '出口', 'menu', '/fundamental/export', 'fundamental/export/index', 'Promotion', 3),
- (12, 8, '消费', 'menu', '/fundamental/consumption', 'fundamental/consumption/index', 'ShoppingCart', 4),
- (13, 8, '通胀', 'menu', '/fundamental/inflation', 'fundamental/inflation/index', 'Warning', 5),
- (14, 8, '供给', 'menu', '/fundamental/supply', 'fundamental/supply/index', 'Box', 6),
- (15, 8, '景气度', 'menu', '/fundamental/prosperity', 'fundamental/prosperity/index', 'Odometer', 7);
- -- ============================================================
- -- 6. 菜单授权:ADMIN 拥有全部菜单
- -- ============================================================
- INSERT OR IGNORE INTO sys_role_menu(role_id, menu_id)
- SELECT 1, id FROM sys_menu;
- -- ============================================================
- -- 完成
- -- ============================================================
- -- 默认管理员:admin / admin123
- -- 默认用户:注册即可,自动授予 USER 角色
|