Files
ccdi/sql/migration/2026-07-29-xinhua-enterprise-profile.sql

181 lines
14 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.
-- 新华社工商信息同步接入
-- MySQL 5.7/8.0 幂等迁移,统一字符集与排序规则。
SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE IF NOT EXISTS `ccdi_enterpriseinfo_query_cache` (
`info_id` bigint NOT NULL AUTO_INCREMENT,
`query_param` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`query_result` longtext COLLATE utf8mb4_general_ci NOT NULL,
`query_type` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`created_date` datetime NOT NULL,
`valid_date` datetime NOT NULL,
PRIMARY KEY (`info_id`),
UNIQUE KEY `uk_enterpriseinfo_query` (`query_param`,`query_type`),
KEY `idx_enterpriseinfo_valid_date` (`valid_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工商信息原始响应缓存';
ALTER TABLE `ccdi_enterpriseinfo_query_cache`
MODIFY `query_result` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE IF NOT EXISTS `ccdi_enterprise_shareholder` (
`shareholder_id` bigint NOT NULL AUTO_INCREMENT,
`social_credit_code` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`shareholder_seq` int DEFAULT NULL,
`shareholder_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`shareholder_type` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
`shareholder_credit_code` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`stock_percent` decimal(12,6) DEFAULT NULL,
`subscribed_capital` decimal(20,6) DEFAULT NULL,
`capital_unit` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`cache_info_id` bigint DEFAULT NULL,
`sync_time` datetime DEFAULT NULL,
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`shareholder_id`),
KEY `idx_enterprise_shareholder_credit` (`social_credit_code`),
KEY `idx_enterprise_shareholder_cache` (`cache_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='实体库企业完整股东';
CREATE TABLE IF NOT EXISTS `ccdi_project_counterparty_enterprise` (
`counterparty_enterprise_id` bigint NOT NULL AUTO_INCREMENT,
`project_id` bigint NOT NULL,
`counterparty_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`social_credit_code` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`enterprise_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`registered_capital` decimal(20,6) DEFAULT NULL,
`registered_capital_unit` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`register_date` date DEFAULT NULL,
`establish_date` date DEFAULT NULL,
`industry_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
`industry_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`organization_type_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
`organization_type_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`region_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
`region_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`register_address` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL,
`employee_count` int DEFAULT NULL,
`legal_representative` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`cache_info_id` bigint DEFAULT NULL,
`sync_time` datetime DEFAULT NULL,
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`counterparty_enterprise_id`),
UNIQUE KEY `uk_project_counterparty_name` (`project_id`,`counterparty_name`),
KEY `idx_project_counterparty_credit` (`social_credit_code`),
KEY `idx_project_counterparty_cache` (`cache_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='项目对手方工商信息';
CREATE TABLE IF NOT EXISTS `ccdi_project_counterparty_shareholder` (
`shareholder_id` bigint NOT NULL AUTO_INCREMENT,
`counterparty_enterprise_id` bigint NOT NULL,
`shareholder_seq` int NOT NULL,
`shareholder_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`shareholder_type` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
`shareholder_credit_code` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`stock_percent` decimal(12,6) DEFAULT NULL,
`subscribed_capital` decimal(20,6) DEFAULT NULL,
`capital_unit` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`shareholder_id`),
KEY `idx_project_counterparty_shareholder_enterprise` (`counterparty_enterprise_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='项目对手方完整股东';
CREATE TABLE IF NOT EXISTS `sys_api_log` (
`log_id` bigint NOT NULL AUTO_INCREMENT,
`caller_user_id` bigint DEFAULT NULL,
`caller_username` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`api_url` text COLLATE utf8mb4_general_ci NOT NULL,
`http_method` varchar(10) COLLATE utf8mb4_general_ci NOT NULL,
`content_type` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`request_headers` longtext COLLATE utf8mb4_general_ci,
`request_params` longtext COLLATE utf8mb4_general_ci,
`response_status` int DEFAULT NULL,
`response_headers` longtext COLLATE utf8mb4_general_ci,
`response_body` longtext COLLATE utf8mb4_general_ci,
`call_status` char(1) COLLATE utf8mb4_general_ci NOT NULL,
`error_msg` longtext COLLATE utf8mb4_general_ci,
`cost_time` bigint NOT NULL,
`call_time` datetime NOT NULL,
PRIMARY KEY (`log_id`),
KEY `idx_api_log_call_time` (`call_time`),
KEY `idx_api_log_caller` (`caller_user_id`),
KEY `idx_api_log_status` (`call_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='外部接口调用日志';
ALTER TABLE `ccdi_enterprise_shareholder`
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `ccdi_project_counterparty_enterprise`
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `ccdi_project_counterparty_shareholder`
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `sys_api_log`
MODIFY `caller_username` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
MODIFY `api_url` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
MODIFY `http_method` VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
MODIFY `call_status` CHAR(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
MODIFY `cost_time` BIGINT NOT NULL,
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 企业实体扩展字段MySQL 5.7 不支持 ADD COLUMN IF NOT EXISTS使用 information_schema 判定)。
SET @schema_name = DATABASE();
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='registered_capital'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN registered_capital DECIMAL(20,6) NULL COMMENT ''注册资本'' AFTER legal_representative');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='registered_capital_unit'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN registered_capital_unit VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT ''注册资本单位'' AFTER registered_capital');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='register_date'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN register_date DATE NULL COMMENT ''注册日期'' AFTER registered_capital_unit');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='region_code'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN region_code VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT ''区域编码'' AFTER register_date');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='region_name'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN region_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT ''区域名称'' AFTER region_code');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='employee_count'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN employee_count INT NULL COMMENT ''从业人数'' AFTER region_name');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='cache_info_id'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN cache_info_id BIGINT NULL COMMENT ''工商缓存ID'' AFTER employee_count');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=@schema_name AND table_name='ccdi_enterprise_base_info' AND column_name='enterprise_sync_time'), 'SELECT 1', 'ALTER TABLE ccdi_enterprise_base_info ADD COLUMN enterprise_sync_time DATETIME NULL COMMENT ''工商同步时间'' AFTER cache_info_id');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
ALTER TABLE `ccdi_enterprise_base_info` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 只读接口日志菜单。
SET @log_parent_id = (SELECT menu_id FROM sys_menu WHERE menu_type='M' AND menu_name='日志管理' ORDER BY menu_id LIMIT 1);
SET @api_log_menu_id = (SELECT menu_id FROM sys_menu WHERE perms='monitor:apilog:list' ORDER BY menu_id LIMIT 1);
SET @next_menu_id = (SELECT next_id FROM (SELECT COALESCE(MAX(menu_id), 0) + 1 AS next_id FROM sys_menu) t);
SET @api_log_menu_id = COALESCE(@api_log_menu_id, @next_menu_id);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT @api_log_menu_id, '接口日志', @log_parent_id, 3, 'apilog', 'monitor/apilog/index', '', '', 1, 0, 'C', '0', '0', 'monitor:apilog:list', 'form', 'admin', NOW(), '', NULL, '只读外部接口调用日志'
WHERE @log_parent_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms='monitor:apilog:list');
-- 工商刷新和历史补全权限。
SET @enterprise_menu_id = (SELECT menu_id FROM sys_menu WHERE perms='ccdi:enterpriseBaseInfo:list' ORDER BY menu_id LIMIT 1);
SET @project_menu_id = (SELECT menu_id FROM sys_menu WHERE perms='ccdi:project:list' ORDER BY menu_id LIMIT 1);
SET @next_menu_id = (SELECT next_id FROM (SELECT COALESCE(MAX(menu_id), 0) + 1 AS next_id FROM sys_menu) t);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT @next_menu_id, '实体工商刷新', @enterprise_menu_id, 6, '', NULL, '', '', 1, 0, 'F', '0', '0', 'ccdi:enterpriseBaseInfo:refresh', '#', 'admin', NOW(), '', NULL, ''
WHERE @enterprise_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms='ccdi:enterpriseBaseInfo:refresh');
SET @next_menu_id = (SELECT next_id FROM (SELECT COALESCE(MAX(menu_id), 0) + 1 AS next_id FROM sys_menu) t);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT @next_menu_id, '实体工商补全', @enterprise_menu_id, 7, '', NULL, '', '', 1, 0, 'F', '0', '0', 'ccdi:enterpriseBaseInfo:backfill', '#', 'admin', NOW(), '', NULL, ''
WHERE @enterprise_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms='ccdi:enterpriseBaseInfo:backfill');
SET @next_menu_id = (SELECT next_id FROM (SELECT COALESCE(MAX(menu_id), 0) + 1 AS next_id FROM sys_menu) t);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT @next_menu_id, '对手方工商刷新', @project_menu_id, 6, '', NULL, '', '', 1, 0, 'F', '0', '0', 'ccdi:project:counterpartyEnterprise:refresh', '#', 'admin', NOW(), '', NULL, ''
WHERE @project_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms='ccdi:project:counterpartyEnterprise:refresh');
SET @next_menu_id = (SELECT next_id FROM (SELECT COALESCE(MAX(menu_id), 0) + 1 AS next_id FROM sys_menu) t);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT @next_menu_id, '对手方工商补全', @project_menu_id, 7, '', NULL, '', '', 1, 0, 'F', '0', '0', 'ccdi:project:counterpartyEnterprise:backfill', '#', 'admin', NOW(), '', NULL, ''
WHERE @project_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms='ccdi:project:counterpartyEnterprise:backfill');
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu
WHERE perms IN ('monitor:apilog:list', 'ccdi:enterpriseBaseInfo:refresh', 'ccdi:enterpriseBaseInfo:backfill',
'ccdi:project:counterpartyEnterprise:refresh', 'ccdi:project:counterpartyEnterprise:backfill');