cursor-init/database_export.sql

500 lines
25 KiB
SQL
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.

-- =============================================
-- 星撰个人综合平台 - 基础用户系统数据库结构导出
-- 版本: M2 基础用户系统
-- 生成时间: 2024-12-30
-- 数据库: MySQL 8.0+
-- =============================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =============================================
-- 1. 用户表 (sys_users)
-- =============================================
DROP TABLE IF EXISTS `sys_users`;
CREATE TABLE `sys_users` (
`id` BIGINT NOT NULL COMMENT '主键雪花ID',
`username` VARCHAR(50) NOT NULL COMMENT '用户名,唯一',
`email` VARCHAR(100) NOT NULL COMMENT '邮箱,唯一',
`mobile` VARCHAR(20) NULL COMMENT '手机号',
`password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希值',
`avatar` VARCHAR(255) NULL COMMENT '头像URL',
`nickname` VARCHAR(100) NULL COMMENT '昵称',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态active-正常,inactive-未激活,locked-锁定,disabled-禁用',
`gender` TINYINT NULL DEFAULT 0 COMMENT '性别0-未知,1-男,2-女',
`birthday` DATE NULL COMMENT '生日',
`bio` VARCHAR(500) NULL COMMENT '个人简介',
`login_count` INT NOT NULL DEFAULT 0 COMMENT '登录次数',
`last_login_at` DATETIME NULL COMMENT '最后登录时间',
`last_login_ip` VARCHAR(45) NULL COMMENT '最后登录IP',
`failed_attempts` INT NOT NULL DEFAULT 0 COMMENT '连续失败尝试次数',
`locked_until` DATETIME NULL COMMENT '锁定截止时间',
`is_root` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否超级管理员',
`extra` JSON NULL COMMENT '扩展信息JSON格式',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间,软删除标记',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 用户表索引
CREATE UNIQUE INDEX `uk_username` ON `sys_users` (`username`, `deleted_at`);
CREATE UNIQUE INDEX `uk_email` ON `sys_users` (`email`, `deleted_at`);
CREATE INDEX `idx_mobile` ON `sys_users` (`mobile`);
CREATE INDEX `idx_status` ON `sys_users` (`status`);
CREATE INDEX `idx_created_at` ON `sys_users` (`created_at`);
CREATE INDEX `idx_deleted_at` ON `sys_users` (`deleted_at`);
CREATE INDEX `idx_is_root` ON `sys_users` (`is_root`);
CREATE INDEX `idx_last_login` ON `sys_users` (`last_login_at`);
-- =============================================
-- 2. 角色表 (sys_roles)
-- =============================================
DROP TABLE IF EXISTS `sys_roles`;
CREATE TABLE `sys_roles` (
`id` BIGINT NOT NULL COMMENT '主键',
`code` VARCHAR(50) NOT NULL COMMENT '角色代码,唯一',
`name` VARCHAR(100) NOT NULL COMMENT '角色名称',
`description` TEXT NULL COMMENT '角色描述',
`pid` BIGINT NULL DEFAULT 0 COMMENT '父角色ID0表示顶级',
`path` VARCHAR(500) NULL COMMENT '层级路径,如:/1/2/3/',
`level` INT NOT NULL DEFAULT 1 COMMENT '层级深度',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '同级排序号',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态active-启用,inactive-禁用',
`is_system` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否系统内置角色',
`permissions_snapshot` JSON NULL COMMENT '权限快照,用于优化查询',
`extra` JSON NULL COMMENT '扩展信息',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
`version` INT NOT NULL DEFAULT 1 COMMENT '版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
-- 角色表索引
CREATE UNIQUE INDEX `uk_code` ON `sys_roles` (`code`, `deleted_at`);
CREATE INDEX `idx_name` ON `sys_roles` (`name`);
CREATE INDEX `idx_pid` ON `sys_roles` (`pid`);
CREATE INDEX `idx_path` ON `sys_roles` (`path`);
CREATE INDEX `idx_status` ON `sys_roles` (`status`);
CREATE INDEX `idx_deleted_at` ON `sys_roles` (`deleted_at`);
CREATE INDEX `idx_is_system` ON `sys_roles` (`is_system`);
CREATE INDEX `idx_sort` ON `sys_roles` (`pid`, `sort_order`);
-- =============================================
-- 3. 权限表 (sys_permissions)
-- =============================================
DROP TABLE IF EXISTS `sys_permissions`;
CREATE TABLE `sys_permissions` (
`id` BIGINT NOT NULL COMMENT '主键',
`code` VARCHAR(100) NOT NULL COMMENT '权限代码,唯一',
`name` VARCHAR(100) NOT NULL COMMENT '权限名称',
`type` VARCHAR(20) NOT NULL COMMENT '权限类型menu-菜单,button-按钮,api-接口,data-数据',
`resource` VARCHAR(50) NULL COMMENT '资源标识user,role,post',
`action` VARCHAR(50) NULL COMMENT '操作标识read,create,update,delete',
`description` TEXT NULL COMMENT '权限描述',
`pid` BIGINT NULL DEFAULT 0 COMMENT '父权限ID',
`path` VARCHAR(500) NULL COMMENT '层级路径',
`level` INT NOT NULL DEFAULT 1 COMMENT '层级深度',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序号',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态',
`meta` JSON NULL COMMENT '元数据,如:图标、路由等',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';
-- 权限表索引
CREATE UNIQUE INDEX `uk_code` ON `sys_permissions` (`code`, `deleted_at`);
CREATE INDEX `idx_type` ON `sys_permissions` (`type`);
CREATE INDEX `idx_resource_action` ON `sys_permissions` (`resource`, `action`);
CREATE INDEX `idx_pid` ON `sys_permissions` (`pid`);
CREATE INDEX `idx_deleted_at` ON `sys_permissions` (`deleted_at`);
CREATE INDEX `idx_status` ON `sys_permissions` (`status`);
CREATE INDEX `idx_sort` ON `sys_permissions` (`pid`, `sort_order`);
-- =============================================
-- 4. 组织架构表 (sys_organizations)
-- =============================================
DROP TABLE IF EXISTS `sys_organizations`;
CREATE TABLE `sys_organizations` (
`id` BIGINT NOT NULL COMMENT '主键',
`code` VARCHAR(100) NOT NULL COMMENT '组织代码,唯一',
`name` VARCHAR(200) NOT NULL COMMENT '组织名称',
`full_name` VARCHAR(200) NULL COMMENT '组织全称',
`description` TEXT NULL COMMENT '组织描述',
`pid` BIGINT NULL DEFAULT 0 COMMENT '父组织ID',
`path` VARCHAR(500) NULL COMMENT '层级路径',
`level` INT NOT NULL DEFAULT 1 COMMENT '层级深度',
`type` VARCHAR(20) NULL COMMENT '组织类型company,department,team',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序号',
`leader_id` BIGINT NULL COMMENT '负责人ID',
`address` VARCHAR(200) NULL COMMENT '地址',
`phone` VARCHAR(50) NULL COMMENT '联系电话',
`extra` JSON NULL COMMENT '扩展信息',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
`version` INT NOT NULL DEFAULT 1 COMMENT '版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织架构表';
-- 组织架构表索引
CREATE UNIQUE INDEX `uk_code` ON `sys_organizations` (`code`, `deleted_at`);
CREATE INDEX `idx_name` ON `sys_organizations` (`name`);
CREATE INDEX `idx_pid` ON `sys_organizations` (`pid`);
CREATE INDEX `idx_path` ON `sys_organizations` (`path`);
CREATE INDEX `idx_type` ON `sys_organizations` (`type`);
CREATE INDEX `idx_leader_id` ON `sys_organizations` (`leader_id`);
CREATE INDEX `idx_deleted_at` ON `sys_organizations` (`deleted_at`);
CREATE INDEX `idx_status` ON `sys_organizations` (`status`);
CREATE INDEX `idx_sort` ON `sys_organizations` (`pid`, `sort_order`);
-- =============================================
-- 5. 字典类型表 (sys_dict_types)
-- =============================================
DROP TABLE IF EXISTS `sys_dict_types`;
CREATE TABLE `sys_dict_types` (
`id` BIGINT NOT NULL COMMENT '主键',
`code` VARCHAR(50) NOT NULL COMMENT '字典类型代码,唯一',
`name` VARCHAR(100) NOT NULL COMMENT '字典类型名称',
`description` TEXT NULL COMMENT '描述',
`pid` BIGINT NULL DEFAULT 0 COMMENT '父字典类型ID支持字典分类',
`path` VARCHAR(500) NULL COMMENT '层级路径',
`level` INT NOT NULL DEFAULT 1 COMMENT '层级深度',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态active-启用,inactive-禁用',
`is_system` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否系统内置',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序号',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典类型表';
-- 字典类型表索引
CREATE UNIQUE INDEX `uk_code` ON `sys_dict_types` (`code`, `deleted_at`);
CREATE INDEX `idx_name` ON `sys_dict_types` (`name`);
CREATE INDEX `idx_pid` ON `sys_dict_types` (`pid`);
CREATE INDEX `idx_path` ON `sys_dict_types` (`path`);
CREATE INDEX `idx_status` ON `sys_dict_types` (`status`);
CREATE INDEX `idx_deleted_at` ON `sys_dict_types` (`deleted_at`);
CREATE INDEX `idx_is_system` ON `sys_dict_types` (`is_system`);
CREATE INDEX `idx_sort` ON `sys_dict_types` (`pid`, `sort_order`);
-- =============================================
-- 6. 字典项表 (sys_dict_items)
-- =============================================
DROP TABLE IF EXISTS `sys_dict_items`;
CREATE TABLE `sys_dict_items` (
`id` BIGINT NOT NULL COMMENT '主键',
`type_id` BIGINT NOT NULL COMMENT '字典类型ID',
`item_key` VARCHAR(50) NOT NULL COMMENT '字典项键',
`item_value` VARCHAR(200) NOT NULL COMMENT '字典项值',
`label` VARCHAR(100) NOT NULL COMMENT '显示标签',
`label_en` VARCHAR(200) NULL COMMENT '英文标签',
`description` TEXT NULL COMMENT '描述',
`pid` BIGINT NULL DEFAULT 0 COMMENT '父字典项ID支持树形字典',
`path` VARCHAR(500) NULL COMMENT '层级路径',
`level` INT NOT NULL DEFAULT 1 COMMENT '层级深度',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序号',
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态',
`css_class` VARCHAR(50) NULL COMMENT 'CSS样式类',
`color` VARCHAR(50) NULL COMMENT '颜色值,如:#FF0000',
`extra` JSON NULL COMMENT '扩展属性',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` BIGINT NULL COMMENT '更新人ID',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典项表';
-- 字典项表索引
CREATE UNIQUE INDEX `uk_type_key` ON `sys_dict_items` (`type_id`, `item_key`, `deleted_at`);
CREATE INDEX `idx_type_id` ON `sys_dict_items` (`type_id`);
CREATE INDEX `idx_pid` ON `sys_dict_items` (`pid`);
CREATE INDEX `idx_status` ON `sys_dict_items` (`status`);
CREATE INDEX `idx_deleted_at` ON `sys_dict_items` (`deleted_at`);
CREATE INDEX `idx_sort` ON `sys_dict_items` (`type_id`, `sort_order`);
CREATE INDEX `idx_key` ON `sys_dict_items` (`item_key`);
-- =============================================
-- 7. 标签表 (sys_tags)
-- =============================================
DROP TABLE IF EXISTS `sys_tags`;
CREATE TABLE `sys_tags` (
`id` BIGINT NOT NULL COMMENT '主键',
`name` VARCHAR(50) NOT NULL COMMENT '标签名称',
`type` VARCHAR(50) NULL DEFAULT 'user' COMMENT '标签类型user-用户标签,role-角色标签,content-内容标签',
`color` VARCHAR(50) NULL COMMENT '标签颜色,如:#FF0000',
`description` TEXT NULL COMMENT '描述',
`usage_count` INT NOT NULL DEFAULT 0 COMMENT '使用次数统计',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`deleted_at` DATETIME NULL COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='标签表';
-- 标签表索引
CREATE UNIQUE INDEX `uk_name_type` ON `sys_tags` (`name`, `type`, `deleted_at`);
CREATE INDEX `idx_type` ON `sys_tags` (`type`);
CREATE INDEX `idx_usage_count` ON `sys_tags` (`usage_count` DESC);
CREATE INDEX `idx_deleted_at` ON `sys_tags` (`deleted_at`);
CREATE INDEX `idx_name` ON `sys_tags` (`name`);
-- =============================================
-- 8. 用户角色关联表 (sys_user_roles)
-- =============================================
DROP TABLE IF EXISTS `sys_user_roles`;
CREATE TABLE `sys_user_roles` (
`id` BIGINT NOT NULL COMMENT '主键',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`role_id` BIGINT NOT NULL COMMENT '角色ID',
`expired_at` DATETIME NULL COMMENT '过期时间NULL表示永久',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
-- 用户角色关联表索引
CREATE UNIQUE INDEX `uk_user_role` ON `sys_user_roles` (`user_id`, `role_id`);
CREATE INDEX `idx_user_id` ON `sys_user_roles` (`user_id`);
CREATE INDEX `idx_role_id` ON `sys_user_roles` (`role_id`);
CREATE INDEX `idx_expired_at` ON `sys_user_roles` (`expired_at`);
CREATE INDEX `idx_created_at` ON `sys_user_roles` (`created_at`);
-- =============================================
-- 9. 角色权限关联表 (sys_role_permissions)
-- =============================================
DROP TABLE IF EXISTS `sys_role_permissions`;
CREATE TABLE `sys_role_permissions` (
`id` BIGINT NOT NULL COMMENT '主键',
`role_id` BIGINT NOT NULL COMMENT '角色ID',
`permission_id` BIGINT NOT NULL COMMENT '权限ID',
`is_half` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否半选状态(树形权限)',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';
-- 角色权限关联表索引
CREATE UNIQUE INDEX `uk_role_permission` ON `sys_role_permissions` (`role_id`, `permission_id`);
CREATE INDEX `idx_role_id` ON `sys_role_permissions` (`role_id`);
CREATE INDEX `idx_permission_id` ON `sys_role_permissions` (`permission_id`);
CREATE INDEX `idx_is_half` ON `sys_role_permissions` (`is_half`);
-- =============================================
-- 10. 用户组织关联表 (sys_user_organizations)
-- =============================================
DROP TABLE IF EXISTS `sys_user_organizations`;
CREATE TABLE `sys_user_organizations` (
`id` BIGINT NOT NULL COMMENT '主键',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`organization_id` BIGINT NOT NULL COMMENT '组织ID',
`is_primary` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否主组织',
`position` VARCHAR(100) NULL COMMENT '职位',
`joined_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户组织关联表';
-- 用户组织关联表索引
CREATE UNIQUE INDEX `uk_user_org` ON `sys_user_organizations` (`user_id`, `organization_id`);
CREATE INDEX `idx_user_id` ON `sys_user_organizations` (`user_id`);
CREATE INDEX `idx_organization_id` ON `sys_user_organizations` (`organization_id`);
CREATE INDEX `idx_is_primary` ON `sys_user_organizations` (`is_primary`);
CREATE INDEX `idx_joined_at` ON `sys_user_organizations` (`joined_at`);
-- =============================================
-- 11. 用户标签关联表 (sys_user_tags)
-- =============================================
DROP TABLE IF EXISTS `sys_user_tags`;
CREATE TABLE `sys_user_tags` (
`id` BIGINT NOT NULL COMMENT '主键',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`tag_id` BIGINT NOT NULL COMMENT '标签ID',
`created_by` BIGINT NULL COMMENT '创建人ID',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户标签关联表';
-- 用户标签关联表索引
CREATE UNIQUE INDEX `uk_user_tag` ON `sys_user_tags` (`user_id`, `tag_id`);
CREATE INDEX `idx_user_id` ON `sys_user_tags` (`user_id`);
CREATE INDEX `idx_tag_id` ON `sys_user_tags` (`tag_id`);
CREATE INDEX `idx_created_at` ON `sys_user_tags` (`created_at`);
-- =============================================
-- 12. 操作日志表 (sys_operation_logs)
-- =============================================
DROP TABLE IF EXISTS `sys_operation_logs`;
CREATE TABLE `sys_operation_logs` (
`id` BIGINT NOT NULL COMMENT '主键',
`user_id` BIGINT NULL COMMENT '操作用户ID',
`username` VARCHAR(100) NULL COMMENT '操作用户名',
`module` VARCHAR(50) NOT NULL COMMENT '操作模块',
`action` VARCHAR(50) NOT NULL COMMENT '操作类型',
`target` VARCHAR(200) NULL COMMENT '操作对象描述',
`target_id` BIGINT NULL COMMENT '操作对象ID',
`request_data` TEXT NULL COMMENT '请求数据',
`response_data` TEXT NULL COMMENT '响应数据',
`status` VARCHAR(20) NOT NULL COMMENT '操作状态success-成功,fail-失败',
`ip` VARCHAR(45) NULL COMMENT 'IP地址',
`user_agent` VARCHAR(200) NULL COMMENT '用户代理',
`duration` BIGINT NULL COMMENT '操作耗时(毫秒)',
`error_msg` TEXT NULL COMMENT '错误信息',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
-- 操作日志表索引
CREATE INDEX `idx_user_id` ON `sys_operation_logs` (`user_id`);
CREATE INDEX `idx_module_action` ON `sys_operation_logs` (`module`, `action`);
CREATE INDEX `idx_target` ON `sys_operation_logs` (`target_id`);
CREATE INDEX `idx_status` ON `sys_operation_logs` (`status`);
CREATE INDEX `idx_created_at` ON `sys_operation_logs` (`created_at`);
CREATE INDEX `idx_ip` ON `sys_operation_logs` (`ip`);
-- =============================================
-- 初始化数据
-- =============================================
-- -- 1. 系统初始用户
-- INSERT INTO `sys_users` (`id`, `username`, `email`, `password_hash`, `nickname`, `is_root`, `status`)
-- VALUES (1, 'root', 'root@system.local', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewYpfQaXUIkRrPJK', '超级管理员', TRUE, 'active');
-- INSERT INTO `sys_users` (`id`, `username`, `email`, `password_hash`, `nickname`, `status`)
-- VALUES (2, 'admin', 'admin@system.local', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewYpfQaXUIkRrPJK', '系统管理员', 'active');
-- -- 2. 系统初始角色
-- INSERT INTO `sys_roles` (`id`, `code`, `name`, `description`, `is_system`, `status`)
-- VALUES (1, 'super_admin', '超级管理员', '拥有系统所有权限', TRUE, 'active');
-- INSERT INTO `sys_roles` (`id`, `code`, `name`, `description`, `is_system`, `status`, `pid`, `path`, `level`)
-- VALUES (2, 'admin', '系统管理员', '负责系统配置和用户管理', TRUE, 'active', 1, '/1/2/', 2);
-- INSERT INTO `sys_roles` (`id`, `code`, `name`, `description`, `is_system`, `status`)
-- VALUES (3, 'user', '普通用户', '普通注册用户默认角色', TRUE, 'active');
-- -- 3. 分配角色
-- INSERT INTO `sys_user_roles` (`user_id`, `role_id`) VALUES (1, 1);
-- INSERT INTO `sys_user_roles` (`user_id`, `role_id`) VALUES (2, 2);
-- -- 4. 字典分类
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`) VALUES
-- (1, 'system', '系统字典', TRUE),
-- (2, 'business', '业务字典', TRUE);
-- -- 5. 用户状态字典
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (10, 'user_status', '用户状态', TRUE, 1, '/1/10/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `color`, `sort_order`) VALUES
-- (10, 'active', 'active', '正常', '#52c41a', 1),
-- (10, 'inactive', 'inactive', '未激活', '#faad14', 2),
-- (10, 'locked', 'locked', '锁定', '#ff4d4f', 3),
-- (10, 'disabled', 'disabled', '禁用', '#d9d9d9', 4);
-- -- 6. 组织类型字典
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (11, 'org_type', '组织类型', TRUE, 1, '/1/11/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `sort_order`) VALUES
-- (11, 'company', 'company', '公司', 1),
-- (11, 'department', 'department', '部门', 2),
-- (11, 'team', 'team', '团队', 3),
-- (11, 'group', 'group', '小组', 4);
-- -- 7. 性别字典
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (12, 'gender', '性别', TRUE, 1, '/1/12/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `sort_order`) VALUES
-- (12, '0', '0', '未知', 1),
-- (12, '1', '1', '男', 2),
-- (12, '2', '2', '女', 3);
-- -- 8. 权限类型字典
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (13, 'permission_type', '权限类型', TRUE, 1, '/1/13/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `color`, `sort_order`) VALUES
-- (13, 'menu', 'menu', '菜单', '#1890ff', 1),
-- (13, 'button', 'button', '按钮', '#52c41a', 2),
-- (13, 'api', 'api', '接口', '#fa8c16', 3),
-- (13, 'data', 'data', '数据', '#722ed1', 4);
-- -- 9. 标签类型字典
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (14, 'tag_type', '标签类型', TRUE, 1, '/1/14/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `sort_order`) VALUES
-- (14, 'user', 'user', '用户标签', 1),
-- (14, 'role', 'role', '角色标签', 2),
-- (14, 'content', 'content', '内容标签', 3);
-- -- 10. 地区字典(示例)
-- INSERT INTO `sys_dict_types` (`id`, `code`, `name`, `is_system`, `pid`, `path`) VALUES
-- (20, 'region', '地区', TRUE, 2, '/2/20/');
-- INSERT INTO `sys_dict_items` (`type_id`, `item_key`, `item_value`, `label`, `sort_order`) VALUES
-- (20, 'CN', 'CN', '中国', 1);
-- -- 11. 基础权限数据
-- INSERT INTO `sys_permissions` (`id`, `code`, `name`, `type`, `resource`, `action`) VALUES
-- (1, 'system:manage', '系统管理', 'menu', 'system', 'manage'),
-- (2, 'user:read', '查看用户', 'api', 'user', 'read'),
-- (3, 'user:create', '创建用户', 'api', 'user', 'create'),
-- (4, 'user:update', '更新用户', 'api', 'user', 'update'),
-- (5, 'user:delete', '删除用户', 'api', 'user', 'delete'),
-- (6, 'role:read', '查看角色', 'api', 'role', 'read'),
-- (7, 'role:create', '创建角色', 'api', 'role', 'create'),
-- (8, 'role:update', '更新角色', 'api', 'role', 'update'),
-- (9, 'role:delete', '删除角色', 'api', 'role', 'delete');
-- -- 12. 为超级管理员角色分配所有权限
-- INSERT INTO `sys_role_permissions` (`role_id`, `permission_id`)
-- SELECT 1, id FROM `sys_permissions`;
-- -- 13. 初始组织架构
-- INSERT INTO `sys_organizations` (`id`, `code`, `name`, `type`, `status`) VALUES
-- (1, 'ROOT', '星撰集团', 'company', 'active');
-- INSERT INTO `sys_organizations` (`id`, `code`, `name`, `type`, `pid`, `path`, `level`, `status`) VALUES
-- (2, 'TECH', '技术部', 'department', 1, '/1/2/', 2, 'active'),
-- (3, 'PRODUCT', '产品部', 'department', 1, '/1/3/', 2, 'active'),
-- (4, 'OPERATE', '运营部', 'department', 1, '/1/4/', 2, 'active');
-- -- 14. 示例标签数据
-- INSERT INTO `sys_tags` (`name`, `type`, `color`, `description`) VALUES
-- ('VIP', 'user', '#ff4d4f', 'VIP用户'),
-- ('活跃用户', 'user', '#52c41a', '经常登录的用户'),
-- ('内容创作者', 'user', '#1890ff', '发布优质内容的用户'),
-- ('新用户', 'user', '#faad14', '注册不满30天的用户'),
-- ('核心角色', 'role', '#ff4d4f', '系统核心角色'),
-- ('业务角色', 'role', '#1890ff', '业务相关角色');
-- SET FOREIGN_KEY_CHECKS = 1;
-- -- =============================================
-- -- 导出完成
-- -- 说明:
-- -- 1. 默认密码哈希对应的明文密码是 "123456"
-- -- 2. 所有ID使用雪花算法生成这里为演示使用了简单数字
-- -- 3. 建议在生产环境中修改默认密码
-- -- 4. 可根据实际需求调整初始化数据
-- -- =============================================