初始化
This commit is contained in:
122
manifest/sql/migrate.sql
Normal file
122
manifest/sql/migrate.sql
Normal file
@@ -0,0 +1,122 @@
|
||||
-- 工具箱项目数据库初始化脚本
|
||||
-- 种子数据(管理员/模块/等级/工具)由服务启动时自动写入(logic.Seed),无需手工插入。
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `nl_toolbox` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
USE `nl_toolbox`;
|
||||
|
||||
-- 功能模块
|
||||
CREATE TABLE IF NOT EXISTS `modules` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`module_key` VARCHAR(32) NOT NULL COMMENT 'image/doc/calc/time/create/life',
|
||||
`name` VARCHAR(64) NOT NULL COMMENT '模块名称',
|
||||
`icon` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '图标 key(wot 图标名)',
|
||||
`description` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`sort` INT NOT NULL DEFAULT 0,
|
||||
`is_enabled` TINYINT NOT NULL DEFAULT 1,
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
`updated_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_module_key` (`module_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='功能模块';
|
||||
|
||||
-- 用户等级(模块权限)
|
||||
CREATE TABLE IF NOT EXISTS `levels` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`level_key` VARCHAR(32) NOT NULL COMMENT 'v1/v2/v3...',
|
||||
`name` VARCHAR(64) NOT NULL COMMENT '展示名:基础版/进阶版',
|
||||
`modules` JSON NOT NULL COMMENT '["image","doc"] 模块 key 数组',
|
||||
`sort` INT NOT NULL DEFAULT 0,
|
||||
`is_enabled` TINYINT NOT NULL DEFAULT 1,
|
||||
`remark` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
`updated_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_level_key` (`level_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户等级(模块权限)';
|
||||
|
||||
-- 小程序/H5 用户
|
||||
-- username/password_hash:H5 账号登录用;微信账号绑定 H5 账号后同样有值(合并账号)
|
||||
CREATE TABLE IF NOT EXISTS `users` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`openid` VARCHAR(64) NOT NULL COMMENT '微信openid;H5 独立账号为 h5- 前缀占位',
|
||||
`username` VARCHAR(64) NULL DEFAULT NULL COMMENT 'H5 登录名(唯一,可空)',
|
||||
`password_hash` VARCHAR(255) NULL DEFAULT NULL COMMENT 'bcrypt',
|
||||
`nickname` VARCHAR(64) NOT NULL DEFAULT '',
|
||||
`avatar_url` VARCHAR(512) NOT NULL DEFAULT '',
|
||||
`level_key` VARCHAR(32) NOT NULL DEFAULT 'v1',
|
||||
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '1正常 0禁用',
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
`last_login_at` DATETIME NULL DEFAULT NULL,
|
||||
`updated_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_openid` (`openid`),
|
||||
UNIQUE KEY `uk_username` (`username`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序用户';
|
||||
|
||||
-- ===== v0.2 升级(已有库手动执行;MySQL 8.0 不支持 ADD COLUMN IF NOT EXISTS) =====
|
||||
-- ALTER TABLE `users`
|
||||
-- ADD COLUMN `username` VARCHAR(64) NULL DEFAULT NULL COMMENT 'H5 登录名(唯一,可空)' AFTER `openid`,
|
||||
-- ADD COLUMN `password_hash` VARCHAR(255) NULL DEFAULT NULL COMMENT 'bcrypt' AFTER `username`,
|
||||
-- ADD UNIQUE KEY `uk_username` (`username`);
|
||||
|
||||
-- 工具目录
|
||||
CREATE TABLE IF NOT EXISTS `tools` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`tool_key` VARCHAR(64) NOT NULL COMMENT '与前端注册表 src/config/tools.ts 强约定一致',
|
||||
`module_key` VARCHAR(32) NOT NULL COMMENT '所属模块',
|
||||
`name` VARCHAR(64) NOT NULL,
|
||||
`icon` VARCHAR(64) NOT NULL DEFAULT '',
|
||||
`description` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`sort` INT NOT NULL DEFAULT 0,
|
||||
`is_enabled` TINYINT NOT NULL DEFAULT 1,
|
||||
`is_hot` TINYINT NOT NULL DEFAULT 0 COMMENT '工作台推荐位',
|
||||
`usage_count` BIGINT NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
`updated_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_tool_key` (`tool_key`),
|
||||
KEY `idx_module_key` (`module_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工具目录';
|
||||
|
||||
-- 工具使用日志
|
||||
CREATE TABLE IF NOT EXISTS `tool_usage_logs` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` BIGINT UNSIGNED NOT NULL,
|
||||
`tool_key` VARCHAR(64) NOT NULL,
|
||||
`used_at` DATETIME NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_tool_time` (`user_id`, `tool_key`, `used_at`),
|
||||
KEY `idx_used_at` (`used_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工具使用日志';
|
||||
|
||||
-- 工作台配置
|
||||
CREATE TABLE IF NOT EXISTS `user_workbench` (
|
||||
`user_id` BIGINT UNSIGNED NOT NULL,
|
||||
`tool_keys` JSON NOT NULL COMMENT '["img-compress",...] 有序',
|
||||
`updated_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作台配置';
|
||||
|
||||
-- 后台管理员
|
||||
CREATE TABLE IF NOT EXISTS `admin_users` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`account` VARCHAR(64) NOT NULL,
|
||||
`password` VARCHAR(255) NOT NULL COMMENT 'bcrypt',
|
||||
`nick_name` VARCHAR(64) NOT NULL DEFAULT '',
|
||||
`role_name` VARCHAR(64) NOT NULL DEFAULT '超级管理员',
|
||||
`role_value` VARCHAR(32) NOT NULL DEFAULT 'super',
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_account` (`account`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员';
|
||||
|
||||
-- 用户反馈
|
||||
CREATE TABLE IF NOT EXISTS `feedbacks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` BIGINT UNSIGNED NULL,
|
||||
`content` VARCHAR(1000) NOT NULL,
|
||||
`contact` VARCHAR(128) NOT NULL DEFAULT '',
|
||||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待处理 1已处理',
|
||||
`created_at` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户反馈';
|
||||
Reference in New Issue
Block a user