1
This commit is contained in:
@@ -211,7 +211,6 @@ if (this.$tools.getToken()) { /* 已登录 */ }
|
|||||||
| `modelFieldServer` | `modelFieldServer.js` | 数据模型字段 |
|
| `modelFieldServer` | `modelFieldServer.js` | 数据模型字段 |
|
||||||
| `modelServer` | `modelServer.js` | 数据模型 |
|
| `modelServer` | `modelServer.js` | 数据模型 |
|
||||||
| `paramSetupServer` | `paramSetupServer.js` | 系统参数(标题、Logo) |
|
| `paramSetupServer` | `paramSetupServer.js` | 系统参数(标题、Logo) |
|
||||||
| `sysControlTypeServer` | `sysControlTypeServer.js` | 控件类型 |
|
|
||||||
| `sysTenantServer` | `sysTenantServer.js` | 租户管理 |
|
| `sysTenantServer` | `sysTenantServer.js` | 租户管理 |
|
||||||
|
|
||||||
**调用示例:**
|
**调用示例:**
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ alwaysApply: false
|
|||||||
|
|
||||||
手动 `require` 并注册(避免 webpack 动态路径问题):
|
手动 `require` 并注册(避免 webpack 动态路径问题):
|
||||||
|
|
||||||
- **`sys_user`**、**`sys_menu`**、**`sys_role`**、**`sys_tenant`**、**`sys_parameter`**、**`sys_log`**、**`sys_control_type`**
|
- **`sys_user`**、**`sys_menu`**、**`sys_role`**、**`sys_tenant`**、**`sys_parameter`**、**`sys_log`**
|
||||||
|
|
||||||
路由前缀:**`/admin_api`** + 各导出键路径。
|
路由前缀:**`/admin_api`** + 各导出键路径。
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
## 本地运行
|
## 本地运行
|
||||||
|
|
||||||
1. 安装依赖:项目根目录 `npm install`,`admin` 目录 `npm install`
|
1. 安装依赖:项目根目录 `npm install`,`admin` 目录 `npm install`
|
||||||
2. 在 MySQL 中创建库,导入 node-core 自带的系统表;再执行 `sql/tpl_demo.sql` 创建演示表
|
2. 在 MySQL 中创建库并 `USE` 后,执行 **`sql/init.sql`**(或 `migrations/init.sql`,内容一致):创建系统表并写入默认租户、**超级管理员角色**、用户 **`admin` / `123456`**、**站点标题 `sys_title` 与 Logo `sys_logo`**、菜单树、控件字典等;再按需执行 **`sql/tpl_demo.sql`** 创建演示表
|
||||||
3. 修改 `config/config.development.js` 中的数据库账号等
|
3. 修改 `config/config.development.js` 中的数据库账号等
|
||||||
4. 根目录 `npm run api` 启动后端(默认端口见 `config/config.js`)
|
4. 根目录 `npm run api` 启动后端(默认端口见 `config/config.js`)
|
||||||
5. `npm run dev` 启动管理端,浏览器访问 webpack 提示的端口
|
5. `npm run dev` 启动管理端,浏览器访问 webpack 提示的端口
|
||||||
|
|||||||
@@ -404,7 +404,6 @@ AdminFramework.createApp({
|
|||||||
- `system/sys_role`
|
- `system/sys_role`
|
||||||
- `system/sys_user`
|
- `system/sys_user`
|
||||||
- `system/sys_tenant`
|
- `system/sys_tenant`
|
||||||
- `system/sys_control`
|
|
||||||
- `system/sys_menu`
|
- `system/sys_menu`
|
||||||
- `system/sys_title`
|
- `system/sys_title`
|
||||||
|
|
||||||
@@ -432,7 +431,6 @@ AdminFramework.createApp({
|
|||||||
| `modelFieldServer` | `modelFieldServer.js` | 数据模型字段 |
|
| `modelFieldServer` | `modelFieldServer.js` | 数据模型字段 |
|
||||||
| `modelServer` | `modelServer.js` | 数据模型 |
|
| `modelServer` | `modelServer.js` | 数据模型 |
|
||||||
| `paramSetupServer` | `paramSetupServer.js` | 系统参数(标题、Logo) |
|
| `paramSetupServer` | `paramSetupServer.js` | 系统参数(标题、Logo) |
|
||||||
| `sysControlTypeServer` | `sysControlTypeServer.js` | 控件类型 |
|
|
||||||
| `sysTenantServer` | `sysTenantServer.js` | 租户管理 |
|
| `sysTenantServer` | `sysTenantServer.js` | 租户管理 |
|
||||||
|
|
||||||
**调用示例:**
|
**调用示例:**
|
||||||
|
|||||||
@@ -497,68 +497,6 @@ curl "$BASE/admin_api/sys_log/operates?pageOption=%7B%22page%22%3A1%2C%22pageSiz
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 4.6 控件类型 `sys_control_type`
|
|
||||||
|
|
||||||
源码:`controller/admin/sys_control_type.js`。
|
|
||||||
|
|
||||||
| 路径 | 方法 | 认证 | 说明 |
|
|
||||||
|------|------|------|------|
|
|
||||||
| `/sys_control_type/all` | GET | admin | 全部未删除记录。 |
|
|
||||||
| `/sys_control_type/page` | POST | admin | Body 需含 **`seachOption`**:`{ key, value }` 时对 `key` 字段 `LIKE`;分页 **`pageOption`** 经 `getPageSize()` 解析;排序 `id DESC`。 |
|
|
||||||
| `/sys_control_type/add` | POST | admin | 新增。 |
|
|
||||||
| `/sys_control_type/edit` | POST | admin | `id` + 更新字段。 |
|
|
||||||
| `/sys_control_type/del` | POST | admin | 软删除:`id`。 |
|
|
||||||
|
|
||||||
**`POST /sys_control_type/page` 请求 body(完整示例):**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"seachOption": { "key": "name", "value": "输入" },
|
|
||||||
"pageOption": { "page": 1, "pageSize": 20 }
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**`POST /sys_control_type/add` 请求 body(完整示例):**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"name": "上传组件",
|
|
||||||
"code": "upload",
|
|
||||||
"desc": "文件上传控件"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**`POST /sys_control_type/edit` 请求 body(完整示例):**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"name": "上传组件(单文件)",
|
|
||||||
"desc": "限制单文件上传"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**`POST /sys_control_type/del` 请求 body(完整示例):**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": 5
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**响应示例(成功):**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"/sys_control_type/all": { "code": 0, "message": "请求成功", "data": [{ "id": 5, "name": "上传组件" }] },
|
|
||||||
"/sys_control_type/page": { "code": 0, "message": "请求成功", "data": { "count": 1, "rows": [{ "id": 5, "name": "上传组件" }] } },
|
|
||||||
"/sys_control_type/add": { "code": 0, "message": "请求成功", "data": { "id": 5, "name": "上传组件" } },
|
|
||||||
"/sys_control_type/edit": { "code": 0, "message": "请求成功", "data": [1] },
|
|
||||||
"/sys_control_type/del": { "code": 0, "message": "请求成功", "data": [1] }
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1340,7 +1278,6 @@ start().catch((error) => {
|
|||||||
1. **白名单**为子串匹配,自定义公开接口时避免与 `/login` 等敏感片段无意冲突。
|
1. **白名单**为子串匹配,自定义公开接口时避免与 `/login` 等敏感片段无意冲突。
|
||||||
2. **系统管理接口**路径前缀为 **`/admin_api`**;业务前缀在 `apiPaths` 中单独配置。
|
2. **系统管理接口**路径前缀为 **`/admin_api`**;业务前缀在 `apiPaths` 中单独配置。
|
||||||
3. **`sys_user/edit`** 源码对 `password` 直接取长度,调用时请始终传入 `password`(或按你们分支修复后再依赖可选密码)。
|
3. **`sys_user/edit`** 源码对 `password` 直接取长度,调用时请始终传入 `password`(或按你们分支修复后再依赖可选密码)。
|
||||||
4. **`sys_control_type/page`** 需传 `seachOption` 对象,否则可能运行时报错。
|
|
||||||
5. **生产环境**授权、依赖版本与数据库同步策略以部署与发行说明为准。
|
5. **生产环境**授权、依赖版本与数据库同步策略以部署与发行说明为准。
|
||||||
6. 更完整的 OpenAPI 可通过 **`GET /api/swagger.json`** 与 Swagger UI 查看(与手写路由并行存在时,以生成内容为准)。
|
6. 更完整的 OpenAPI 可通过 **`GET /api/swagger.json`** 与 Swagger UI 查看(与手写路由并行存在时,以生成内容为准)。
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
-- 与 sql/init.sql 同步(内容一致)
|
||||||
|
-- =============================================================================
|
||||||
|
-- 前后端项目模板 · 初始化库表与基础数据(MySQL 5.7+ / 8.x,utf8mb4)
|
||||||
|
-- 执行前请创建空库并 USE 到目标 database;会 DROP 后重建系统表,请勿在生产库直接全量执行。
|
||||||
|
-- 默认管理员:admin / 123456(密码为 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`;
|
||||||
|
|
||||||
|
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='租户';
|
||||||
|
|
||||||
|
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='角色';
|
||||||
|
|
||||||
|
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='用户';
|
||||||
|
|
||||||
|
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='菜单';
|
||||||
|
|
||||||
|
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 '值',
|
||||||
|
`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='系统参数';
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
INSERT INTO `sys_role` (`id`, `name`, `type`, `menus`, `is_delete`)
|
||||||
|
VALUES (1, '超级管理员', 1, CAST('[]' AS JSON), 0);
|
||||||
|
|
||||||
|
INSERT INTO `sys_user` (`id`, `name`, `password`, `roleId`, `tenant_id`, `is_delete`)
|
||||||
|
VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, 1, 0);
|
||||||
|
|
||||||
|
INSERT INTO `sys_parameter` (`key`, `value`, `remark`, `is_modified`, `is_delete`) VALUES
|
||||||
|
('sys_title', '管理系统', '登录页与顶栏标题', 0, 0),
|
||||||
|
('sys_logo', '', '顶栏 Logo 图片地址,可填上传后的相对路径', 0, 0);
|
||||||
|
|
||||||
|
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),
|
||||||
|
(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),
|
||||||
|
(15, '参数设置', 5, 'md-options', '/system/param', '页面', 0, 0, 'system/sys_param_setup', '', 1, 1, 4, 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);
|
||||||
|
|||||||
148
sql/init.sql
Normal file
148
sql/init.sql
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
-- =============================================================================
|
||||||
|
-- 前后端项目模板 · 初始化库表与基础数据(MySQL 5.7+ / 8.x,utf8mb4)
|
||||||
|
-- 执行前请创建空库并 USE 到目标 database;会 DROP 后重建系统表,请勿在生产库直接全量执行。
|
||||||
|
-- 默认管理员:admin / 123456(密码为 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
|
||||||
|
-- menus:JSON;普通角色 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);
|
||||||
|
|
||||||
|
-- 站点标题与 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),
|
||||||
|
(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),
|
||||||
|
(15, '参数设置', 5, 'md-options', '/system/param', '页面', 0, 0, 'system/sys_param_setup', '', 1, 1, 4, 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);
|
||||||
|
|
||||||
|
-- =============================================================================
|
||||||
|
-- 说明:
|
||||||
|
-- 1. sys_parameter.value 建表为 varchar(500) 便于 Logo URL;若与 node_core 模型 STRING(100) 不一致,可后续 ALTER 或改模型。
|
||||||
|
-- 2. 若项目另有业务表,请在业务 migrations 中扩展,勿与本文件系统表冲突。
|
||||||
|
-- 3. 登录可不传 tenant_code 时由后端按用户 tenant_id 解析;传 tenant_code 时用 default 对应本租户。
|
||||||
|
-- =============================================================================
|
||||||
Reference in New Issue
Block a user