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

141 lines
7.7 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.
-- ============================================================
-- SuperLink Web 后台管理系统 - v1.0.16 数据库结构变更脚本
-- 对应需求文档《修改说明》:
-- 1) 所有数据表时间字段调整为"年-月-日"(DATETIME -> DATE)
-- 2) companies / persons 增加 source_channel、source_detail
-- 3) social_accounts 增加 is_defult(1常用 / 0不常用备用)
-- 4) 数据字典:certification_types 改名为 date_dict_certificate,
-- 新增 date_dict_country / date_dict_area / date_dict_industry / source_channels
-- 字典数据见:sql/dict_seed.sql(由官方 Excel 生成,需一并执行)
-- 执行方式:先执行本文件,再执行 sql/dict_seed.sql。
-- 提示:原库业务表(companies/persons/social_accounts 等)不在仓库中,
-- 时间字段批量转换建议使用 tools/migrate_time_to_date.php 自动处理。
-- ============================================================
SET NAMES utf8mb4;
-- ------------------------------------------------------------
-- 1) 时间字段调整(DATETIME -> DATE)
-- 以下为各业务表已知时间字段的手工 ALTER 示例(请按实际库结构核对列名):
-- companies.created_at / updated_at / established_date
-- persons.created_at / updated_at
-- social_accounts.created_at
-- company_needs.created_at
-- company_documents.publish_date / created_at
-- company_certifications.issue_date / expiry_date / created_at
-- company_relations.established_date / created_at
-- person_work_experiences.start_date / end_date / created_at
-- company_products.created_at
-- media_commercial_attributes.created_at
-- channels.created_at / updated_at
-- system_users.last_login_time / created_at / updated_at
-- system_roles.created_at
-- system_logs.created_at
--
-- 示例(MySQL 8.0.13+ 支持 DEFAULT (CURRENT_DATE);5.7 请去掉默认值改为 NULL 后由程序写入):
-- ALTER TABLE companies MODIFY COLUMN created_at DATE NULL DEFAULT (CURRENT_DATE);
-- ALTER TABLE companies MODIFY COLUMN updated_at DATE NULL DEFAULT (CURRENT_DATE);
-- 批量转换推荐直接运行:php tools/migrate_time_to_date.php (自动遍历 information_schema)
-- ------------------------------------------------------------
-- 2) companies / persons 增加来源字段
-- ------------------------------------------------------------
ALTER TABLE `companies`
ADD COLUMN `source_channel` VARCHAR(50) NULL DEFAULT NULL COMMENT '来源渠道(字典:source_channels,如展会/SNS/竞价广告)' AFTER `website`,
ADD COLUMN `source_detail` VARCHAR(255) NULL DEFAULT NULL COMMENT '来源详情(如:华南工博会)' AFTER `source_channel`;
ALTER TABLE `persons`
ADD COLUMN `source_channel` VARCHAR(50) NULL DEFAULT NULL COMMENT '来源渠道(字典:source_channels)' AFTER `work_location`,
ADD COLUMN `source_detail` VARCHAR(255) NULL DEFAULT NULL COMMENT '来源详情' AFTER `source_channel`;
-- ------------------------------------------------------------
-- 3) social_accounts 增加 is_defult(1常用 / 0不常用、备用)
-- ------------------------------------------------------------
ALTER TABLE `social_accounts`
ADD COLUMN `is_defult` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否常用:1常用,0不常用/备用' AFTER `is_primary`;
-- ------------------------------------------------------------
-- 4) 数据字典
-- ------------------------------------------------------------
-- 4.1 certification_types 改名为 date_dict_certificate(保留原数据,随后用 dict_seed.sql 覆盖为官方枚举)
RENAME TABLE `certification_types` TO `date_dict_certificate`;
ALTER TABLE `date_dict_certificate`
ADD COLUMN `code` VARCHAR(50) NULL DEFAULT NULL COMMENT '证书类型枚举编码' AFTER `id`;
-- 4.2 国家地区编码字典
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='国家地区编码字典';
-- 4.3 行政区划编码字典(省/市/区县三级,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='行政区划编码字典';
-- 4.4 招标行业分类字典(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='招标行业分类字典';
-- 4.5 证书类型枚举字典
ALTER TABLE `date_dict_certificate`
MODIFY COLUMN `code` VARCHAR(50) NULL DEFAULT NULL COMMENT '证书类型枚举编码',
ADD UNIQUE KEY `uk_code` (`code`);
-- 4.6 来源渠道字典(source_channel 枚举,参考 certification_types 结构)
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='来源渠道字典';
-- 来源渠道默认数据
INSERT INTO `source_channels` (`name`, `sort_order`) VALUES
('展会', 1), ('SNS/社交媒体', 2), ('竞价广告', 3), ('搜索引擎自然流量', 4),
('行业媒体/门户', 5), ('转介绍', 6), ('电话销售', 7), ('邮件营销', 8),
('地推', 9), ('代理商/渠道', 10), ('官网咨询', 11), ('其他', 99);
-- ------------------------------------------------------------
-- 字典数据(date_dict_country / date_dict_area / date_dict_industry / date_dict_certificate)
-- 请执行:sql/dict_seed.sql
-- ------------------------------------------------------------
-- ============================================================
-- 附:时间字段批量转换工具使用说明
-- 在部署机上执行:php tools/migrate_time_to_date.php
-- 该脚本会自动遍历 mysuperlink 库中所有 DATETIME/TIMESTAMP 字段并转换为 DATE,
-- 即满足"所有数据表时间字段调整为年-月-日"的需求,无需手工逐个核对。
-- ============================================================