-- 工具箱项目数据库初始化脚本 -- 种子数据(管理员/模块/等级/工具)由服务启动时自动写入(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='用户反馈';