Files
qitongxue-api/manifest/sql/migrate.sql
2026-09-17 14:42:44 +08:00

123 lines
5.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 工具箱项目数据库初始化脚本
-- 种子数据管理员/模块/等级/工具由服务启动时自动写入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 '图标 keywot 图标名',
`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_hashH5 账号登录用微信账号绑定 H5 账号后同样有值合并账号
CREATE TABLE IF NOT EXISTS `users` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`openid` VARCHAR(64) NOT NULL COMMENT '微信openidH5 独立账号为 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='用户反馈';