Files
superlink/sql/system_tables.sql
T
nanguaboss 2cb688ed46 0806
2026-08-06 00:50:23 +08:00

189 lines
10 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.
-- ============================================================
-- SuperLink Web 后台管理系统 - 系统表(含 v1.0.16 数据字典表)
-- 数据库:mysuperlink (utf8mb4 / utf8mb4_unicode_ci)
-- 说明:
-- 1) 原库已有14张业务表(companies/persons/social_accounts/company_needs 等),本文件不改动它们。
-- 2) 本文件定义系统表:system_users / system_roles / system_logs / channels,
-- 以及 v1.0.16 新增的数据字典表:date_dict_country / date_dict_area /
-- date_dict_industry / date_dict_certificate / source_channels。
-- 3) 按需求文档:所有时间字段调整为"年-月-日"(DATE 类型,不保留时分秒)。
-- 注意:DATE 默认值使用表达式 DEFAULT (CURRENT_DATE),需 MySQL 8.0.13+;
-- 若为 MySQL 5.7,请将时间字段保留为 DATETIME 或由应用层写入日期。
-- 4) 数据字典的完整数据由官方 Excel 生成,见 sql/dict_seed.sql(建表后执行)。
-- 执行方式:Navicat / phpMyAdmin / mysql 命令行执行本文件即可(可重复执行前请先删除旧表)。
-- ============================================================
SET NAMES utf8mb4;
-- ------------------------------------------------------------
-- 1. 系统用户表
-- ------------------------------------------------------------
DROP TABLE IF EXISTS `system_users`;
CREATE TABLE `system_users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` VARCHAR(50) NOT NULL COMMENT '登录账号',
`password` VARCHAR(64) NOT NULL COMMENT '密码(sha1加密)',
`real_name` VARCHAR(50) DEFAULT NULL COMMENT '真实姓名',
`role_id` INT UNSIGNED NOT NULL COMMENT '角色ID',
`is_active` TINYINT(1) UNSIGNED DEFAULT 1 COMMENT '启用状态(0禁用,1启用)',
`last_login_time` DATE DEFAULT NULL COMMENT '最后登录时间(年-月-日)',
`last_login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP',
`created_at` DATE DEFAULT (CURRENT_DATE) COMMENT '创建时间(年-月-日)',
`updated_at` DATE DEFAULT (CURRENT_DATE) COMMENT '更新时间(年-月-日)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
KEY `idx_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户表';
-- ------------------------------------------------------------
-- 2. 系统角色表
-- ------------------------------------------------------------
DROP TABLE IF EXISTS `system_roles`;
CREATE TABLE `system_roles` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
`permissions` JSON NOT NULL COMMENT '权限列表(菜单标识数组)',
`is_active` TINYINT(1) UNSIGNED DEFAULT 1 COMMENT '启用状态',
`created_at` DATE DEFAULT (CURRENT_DATE) COMMENT '创建时间(年-月-日)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_name` (`role_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统角色表';
-- ------------------------------------------------------------
-- 3. 操作日志表
-- ------------------------------------------------------------
DROP TABLE IF EXISTS `system_logs`;
CREATE TABLE `system_logs` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` INT UNSIGNED NOT NULL COMMENT '操作人ID',
`username` VARCHAR(50) NOT NULL COMMENT '操作人账号',
`action` VARCHAR(50) NOT NULL COMMENT '操作类型(login/logout/add/update/delete/import/export/audit/convert)',
`module` VARCHAR(50) NOT NULL COMMENT '操作模块(company/person/media/need/preliminary/system等)',
`target_table` VARCHAR(50) DEFAULT NULL COMMENT '操作对象表名',
`target_id` INT UNSIGNED DEFAULT NULL COMMENT '操作对象记录ID',
`content` JSON DEFAULT NULL COMMENT '操作内容(变更前后数据)',
`ip` VARCHAR(50) DEFAULT NULL COMMENT '客户端IP',
`created_at` DATE DEFAULT (CURRENT_DATE) COMMENT '操作时间(年-月-日)',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_action` (`action`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
-- ------------------------------------------------------------
-- 4. 默认数据(必须插入)
-- ------------------------------------------------------------
-- 超级管理员角色
INSERT INTO `system_roles` (`role_name`, `permissions`) VALUES
('超级管理员', '["dashboard","company","person","media","need","marketing","channel","document","preliminary","system","log"]');
-- 默认管理员账号(密码:admin123,sha1加密)
INSERT INTO `system_users` (`username`, `password`, `real_name`, `role_id`) VALUES
('admin', SHA1('admin123'), '系统管理员', 1);
-- 基础角色(可选,建议一并创建)
INSERT INTO `system_roles` (`role_name`, `permissions`) VALUES
('数据管理员', '["dashboard","company","person","media","document","preliminary"]'),
('业务专员', '["dashboard","need","marketing"]'),
('只读访客', '["dashboard"]');
-- ------------------------------------------------------------
-- 5. 渠道管理业务表(原14张表中无渠道表,渠道模块所需,按需创建)
-- ------------------------------------------------------------
DROP TABLE IF EXISTS `channels`;
CREATE TABLE `channels` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`channel_name` VARCHAR(100) NOT NULL COMMENT '渠道名称',
`channel_type` VARCHAR(50) DEFAULT NULL COMMENT '渠道类型(线上/线下/展会/转介绍等)',
`contact_person` VARCHAR(50) DEFAULT NULL COMMENT '联系人',
`contact_phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
`contact_email` VARCHAR(100) DEFAULT NULL COMMENT '联系邮箱',
`efficiency_score` DECIMAL(5,2) DEFAULT 0 COMMENT '效率评分(0-100)',
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
`is_active` TINYINT(1) UNSIGNED DEFAULT 1 COMMENT '启用状态',
`created_at` DATE DEFAULT (CURRENT_DATE) COMMENT '创建时间(年-月-日)',
`updated_at` DATE DEFAULT (CURRENT_DATE) COMMENT '更新时间(年-月-日)',
PRIMARY KEY (`id`),
KEY `idx_channel_type` (`channel_type`),
KEY `idx_is_active` (`is_active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='渠道管理表';
-- ------------------------------------------------------------
-- 6. v1.0.16 数据字典表
-- ------------------------------------------------------------
-- 6.1 国家地区编码字典
DROP TABLE IF EXISTS `date_dict_country`;
CREATE TABLE `date_dict_country` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` VARCHAR(50) NOT NULL COMMENT '国家/地区编码',
`name` VARCHAR(100) NOT NULL COMMENT '国家/地区中文名',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='国家地区编码字典';
-- 6.2 行政区划编码字典(省/市/区县三级,parent_code 关联)
DROP TABLE IF EXISTS `date_dict_area`;
CREATE TABLE `date_dict_area` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` VARCHAR(50) NOT NULL COMMENT '行政区划编码',
`name` VARCHAR(100) NOT NULL COMMENT '行政区划名称',
`parent_code` VARCHAR(50) DEFAULT NULL COMMENT '上级行政区划编码(省级为NULL)',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_code`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='行政区划编码字典';
-- 6.3 招标行业分类字典(parent_code 预留大类/细分层级)
DROP TABLE IF EXISTS `date_dict_industry`;
CREATE TABLE `date_dict_industry` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` VARCHAR(50) NOT NULL COMMENT '行业编码',
`name` VARCHAR(100) NOT NULL COMMENT '行业名称',
`parent_code` VARCHAR(50) DEFAULT NULL COMMENT '上级行业编码(大类为NULL)',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_code`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='招标行业分类字典';
-- 6.4 证书类型枚举字典(原 certification_types 表改名而来;新装环境在此创建)
DROP TABLE IF EXISTS `date_dict_certificate`;
CREATE TABLE `date_dict_certificate` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` VARCHAR(50) DEFAULT NULL COMMENT '证书类型枚举编码',
`name` VARCHAR(100) NOT NULL COMMENT '证书类型名称',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='证书类型枚举字典';
-- 6.5 来源渠道字典(source_channel 枚举)
DROP TABLE IF EXISTS `source_channels`;
CREATE TABLE `source_channels` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` VARCHAR(50) NOT NULL COMMENT '渠道名称',
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='来源渠道字典';
-- 6.6 来源渠道默认数据
INSERT INTO `source_channels` (`name`, `sort_order`) VALUES
('展会', 1), ('SNS/社交媒体', 2), ('竞价广告', 3), ('搜索引擎自然流量', 4),
('行业媒体/门户', 5), ('转介绍', 6), ('电话销售', 7), ('邮件营销', 8),
('地推', 9), ('代理商/渠道', 10), ('官网咨询', 11), ('其他', 99);
-- 6.7 数据字典完整数据(国家/行政区划/行业/证书)由官方 Excel 生成:
-- 请执行 sql/dict_seed.sql