Files
张成 1850ec93a2 1
2026-04-29 14:14:19 +08:00

163 lines
10 KiB
SQL
Raw Permalink 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.
-- =============================================================================
-- 前后端项目模板 · 初始化库表与基础数据MySQL 5.7+ / 8.xutf8mb4
-- 执行前请创建空库并 USE 到目标 database库名须与 config/config.development.js 里 db.database 一致);会 DROP 后重建系统表,请勿在生产库直接全量执行。
-- 默认账号admin / 123456zc / zc123密码为 MD5 小写十六进制,与 node_core tokenService.getMd5 一致)
-- =============================================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------------------------------------------------------- 删表(依赖顺序)
DROP TABLE IF EXISTS `sys_log`;
DROP TABLE IF EXISTS `sys_user`;
DROP TABLE IF EXISTS `sys_menu`;
DROP TABLE IF EXISTS `sys_role`;
DROP TABLE IF EXISTS `sys_parameter`;
DROP TABLE IF EXISTS `sys_tenant`;
-- ----------------------------------------------------------------------------- sys_tenant
CREATE TABLE `sys_tenant` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '租户名称',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '租户编码(登录 tenant_code',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`status` int NOT NULL DEFAULT 1 COMMENT '1启用 0停用',
`is_platform` int NOT NULL DEFAULT 0 COMMENT '1平台租户',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_sys_tenant_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户';
-- ----------------------------------------------------------------------------- sys_role
-- menusJSON普通角色 type=0 时为菜单 id 数组;系统角色 type=1 时 authorityMenus 不按 menus 过滤(查全部菜单)
CREATE TABLE `sys_role` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '角色名称',
`type` int NOT NULL DEFAULT 0 COMMENT '0普通 1系统',
`menus` json DEFAULT NULL COMMENT '权限菜单id数组等',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色';
-- ----------------------------------------------------------------------------- sys_user
-- 列名与 Sequelize 模型一致roleId 驼峰、tenant_id 下划线
CREATE TABLE `sys_user` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '登录名',
`password` varchar(100) NOT NULL DEFAULT '' COMMENT 'MD5密码',
`roleId` int NOT NULL COMMENT '角色id',
`tenant_id` int NOT NULL DEFAULT 1 COMMENT '租户id',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_sys_user_tenant` (`tenant_id`),
KEY `idx_sys_user_role` (`roleId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户';
-- ----------------------------------------------------------------------------- sys_menu
CREATE TABLE `sys_menu` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '菜单名称',
`parent_id` int unsigned DEFAULT 0 COMMENT '父id',
`icon` varchar(100) NOT NULL DEFAULT '' COMMENT '图标',
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '路径',
`type` varchar(255) NOT NULL DEFAULT '页面' COMMENT '菜单/页面/外链/功能',
`model_id` int unsigned DEFAULT 0 COMMENT '模型id',
`form_id` int unsigned DEFAULT 0 COMMENT '表单id',
`component` varchar(100) NOT NULL DEFAULT '' COMMENT '组件地址',
`api_path` varchar(100) NOT NULL DEFAULT '' COMMENT 'api地址',
`is_show_menu` int NOT NULL DEFAULT 1 COMMENT '是否显示在菜单',
`is_show` int NOT NULL DEFAULT 1 COMMENT '是否展示',
`sort` int NOT NULL DEFAULT 0 COMMENT '排序',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_sys_menu_parent` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单';
-- ----------------------------------------------------------------------------- sys_parameter站点标题、Logo 等)
CREATE TABLE `sys_parameter` (
`id` int NOT NULL AUTO_INCREMENT,
`key` varchar(100) NOT NULL DEFAULT '' COMMENT '参数key',
`value` varchar(500) NOT NULL DEFAULT '' COMMENT '值(标题/Logo路径等适当加长避免 Logo URL 被截断)',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`is_modified` int NOT NULL DEFAULT 0 COMMENT '0允许修改 1不允许',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_sys_parameter_key` (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统参数';
-- ----------------------------------------------------------------------------- sys_log
CREATE TABLE `sys_log` (
`id` int NOT NULL AUTO_INCREMENT,
`table_name` varchar(100) NOT NULL DEFAULT '' COMMENT '表名',
`operate` varchar(100) NOT NULL DEFAULT '' COMMENT '操作',
`content` json DEFAULT NULL COMMENT '内容',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志';
SET FOREIGN_KEY_CHECKS = 1;
-- ============================================================================= 基础数据
-- 租户
INSERT INTO `sys_tenant` (`id`, `name`, `code`, `remark`, `status`, `is_platform`, `is_delete`)
VALUES (1, '默认平台租户', 'default', '初始化数据', 1, 1, 0);
-- 角色系统管理员type=1 拥有全部菜单,无需维护 menus 数组)
INSERT INTO `sys_role` (`id`, `name`, `type`, `menus`, `is_delete`)
VALUES (1, '超级管理员', 1, CAST('[]' AS JSON), 0);
-- 用户 admin / 123456 → MD5
INSERT INTO `sys_user` (`id`, `name`, `password`, `roleId`, `tenant_id`, `is_delete`)
VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, 1, 0);
-- 用户 zc / zc123 → MD5同为超级管理员角色
INSERT INTO `sys_user` (`id`, `name`, `password`, `roleId`, `tenant_id`, `is_delete`)
VALUES (2, 'zc', 'd3df61764ee9a26091f714b88958caef', 1, 1, 0);
-- 站点标题与 Logo与 admin_core paramSetupServer / sys_title 页一致)
INSERT INTO `sys_parameter` (`key`, `value`, `remark`, `is_modified`, `is_delete`) VALUES
('sys_title', '管理系统', '登录页与顶栏标题', 0, 0),
('sys_logo', '', '顶栏 Logo 图片地址,可填上传后的相对路径', 0, 0);
-- ----------------------------------------------------------------------------- 菜单(与 admin_core defaultMenus 对齐,便于权限与动态路由)
INSERT INTO `sys_menu` (`id`, `name`, `parent_id`, `icon`, `path`, `type`, `model_id`, `form_id`, `component`, `api_path`, `is_show_menu`, `is_show`, `sort`, `is_delete`) VALUES
(1, '首页', 0, 'md-home', '/home', '页面', 0, 0, 'home/index', '', 1, 1, 1, 0),
(200, '业务演示', 0, 'md-bulb', '/demo', '菜单', 0, 0, '', '', 1, 1, 4, 0),
(201, '演示数据', 200, 'md-grid', '/demo/tpl-demo', '页面', 0, 0, 'demo/tpl_demo', '', 1, 1, 1, 0),
(5, '系统管理', 0, 'md-settings', '/system', '菜单', 0, 0, '', '', 1, 1, 2, 0),
(11, '用户管理', 5, 'md-person', '/system/user', '页面', 0, 0, 'system/sys_user', '', 1, 1, 1, 0),
(12, '角色管理', 5, 'md-people', '/system/role', '页面', 0, 0, 'system/sys_role', '', 1, 1, 2, 0),
(13, '系统日志', 5, 'md-list', '/system/log', '页面', 0, 0, 'system/sys_log', '', 1, 1, 3, 0),
(14, '操作日志', 5, 'md-pulse', '/system/log-operate', '页面', 0, 0, 'system/sys_log_operate', '', 1, 1, 4, 0),
(15, '参数设置', 5, 'md-options', '/system/param', '页面', 0, 0, 'system/sys_param_setup', '', 1, 1, 5, 0),
(120, '高级管理', 0, 'md-construct', '/system', '菜单', 0, 0, '', '', 1, 1, 3, 0),
(122, '菜单管理', 120, 'md-menu', '/system/menu', '页面', 0, 0, 'system/sys_menu', '', 1, 1, 1, 0),
(124, '系统标题', 120, 'md-text', '/system/title', '页面', 0, 0, 'system/sys_title', '', 1, 1, 2, 0),
(125, '租户管理', 120, 'md-git-branch', '/system/tenant', '页面', 0, 0, 'system/sys_tenant', '', 1, 1, 3, 0),
(126, '同步框架', 120, 'md-cloud-download', '/system/framework-sync', '页面', 0, 0, 'system/sys_framework_sync', '', 1, 1, 4, 0);
-- ----------------------------------------------------------------------------- sys_log 示例数据表结构见上content 与 Sequelize JSON 包装一致,含 value 键)
INSERT INTO `sys_log` (`table_name`, `operate`, `content`, `is_delete`) VALUES
('sys_user', '登录', JSON_OBJECT('value', '<p>初始化示例:管理员 <span class="bold">admin</span> 登录系统</p>'), 0),
('sys_menu', '新增', JSON_OBJECT('value', '<p>初始化菜单与权限数据已写入 <span class="bold">sys_menu</span></p>'), 0),
('sys_parameter', '修改', JSON_OBJECT('value', '<p><span class="bold">sys_title</span> 默认值为「管理系统」</p>'), 0);
-- =============================================================================
-- 说明:
-- 1. sys_parameter.value 建表为 varchar(500) 便于 Logo URL若与 node_core 模型 STRING(100) 不一致,可后续 ALTER 或改模型。
-- 2. 若项目另有业务表,请在业务 migrations 中扩展,勿与本文件系统表冲突。
-- 3. 登录可不传 tenant_code 时由后端按用户 tenant_id 解析;传 tenant_code 时用 default 对应本租户。
-- =============================================================================