Files
hm-server/deploy/sql/query_whitelist.sql
2026-06-19 12:53:33 +08:00

111 lines
4.2 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.

-- 查询白名单功能数据库迁移脚本
-- 数据库tydata
-- ============================================
-- 1. 创建操作记录表
-- ============================================
CREATE TABLE IF NOT EXISTS `query_whitelist_op_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
`del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT '0' COMMENT '版本号(乐观锁)',
`admin_user_id` bigint NOT NULL COMMENT '操作管理员ID',
`action` varchar(20) NOT NULL COMMENT '操作类型create=创建规则append=追加接口',
`name` varchar(50) NOT NULL DEFAULT '*' COMMENT '姓名规则',
`id_card` varchar(50) NOT NULL COMMENT '身份证号(明文,供后台审计)',
`id_card_masked` varchar(50) DEFAULT NULL COMMENT '天远返回的脱敏身份证号',
`api_codes` varchar(2000) NOT NULL COMMENT '本次提交的产品编码JSON数组',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`tianyuan_code` int NOT NULL DEFAULT 0 COMMENT '天远 API 业务码',
`tianyuan_message` varchar(500) DEFAULT NULL COMMENT '天远 API 返回描述',
`transaction_id` varchar(64) DEFAULT NULL COMMENT '天远 API 流水号',
`entry_id` varchar(64) DEFAULT NULL COMMENT '天远规则ID成功时',
`entry_status` varchar(20) DEFAULT NULL COMMENT '规则状态(成功时)',
`entry_api_codes` varchar(2000) DEFAULT NULL COMMENT '规则当前产品编码列表JSON数组成功时',
PRIMARY KEY (`id`),
KEY `idx_admin_user_id` (`admin_user_id`),
KEY `idx_id_card` (`id_card`),
KEY `idx_action` (`action`),
KEY `idx_tianyuan_code` (`tianyuan_code`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='查询白名单操作记录表';
-- ============================================
-- 2. 菜单:新增「查询白名单」
-- ============================================
-- 软删除旧「模块白名单」菜单(如存在)
UPDATE `admin_menu`
SET `del_state` = 1, `version` = `version` + 1
WHERE `path` = '/product-manage/whitelist/list' AND `del_state` = 0;
-- 软删除曾独立的「查询白名单记录」菜单(如存在)
UPDATE `admin_menu`
SET `del_state` = 1, `version` = `version` + 1
WHERE `path` = '/product-manage/query-whitelist/op-log' AND `del_state` = 0;
-- 插入「查询白名单」菜单(已存在则跳过)
INSERT INTO `admin_menu` (
`pid`, `name`, `path`, `component`, `redirect`, `meta`,
`status`, `type`, `sort`, `del_state`, `version`
)
SELECT
m.`id`,
'queryWhitelist',
'/product-manage/query-whitelist/list',
'/product-manage/query-whitelist/list',
NULL,
JSON_OBJECT('icon', 'lucide:shield-off', 'title', '查询白名单'),
1,
1,
0,
0,
0
FROM `admin_menu` m
WHERE m.`path` = '/product-manage' AND m.`del_state` = 0
AND NOT EXISTS (
SELECT 1 FROM `admin_menu`
WHERE `path` = '/product-manage/query-whitelist/list' AND `del_state` = 0
)
LIMIT 1;
-- 给「超级管理员」授权
INSERT INTO `admin_role_menu` (`role_id`, `menu_id`, `del_state`, `version`)
SELECT
1,
m.`id`,
0,
0
FROM `admin_menu` m
WHERE m.`path` = '/product-manage/query-whitelist/list'
AND m.`del_state` = 0
AND NOT EXISTS (
SELECT 1 FROM `admin_role_menu` rm
WHERE rm.`role_id` = 1
AND rm.`menu_id` = m.`id`
AND rm.`del_state` = 0
);
-- 给所有曾拥有「模块白名单」权限的角色同步授权
INSERT INTO `admin_role_menu` (`role_id`, `menu_id`, `del_state`, `version`)
SELECT
arm.`role_id`,
m.`id`,
0,
0
FROM `admin_role_menu` arm
JOIN `admin_menu` old_m ON old_m.`path` = '/product-manage/whitelist/list'
JOIN `admin_menu` m ON m.`path` = '/product-manage/query-whitelist/list' AND m.`del_state` = 0
WHERE arm.`menu_id` = old_m.`id`
AND arm.`del_state` = 0
AND NOT EXISTS (
SELECT 1 FROM `admin_role_menu` x
WHERE x.`role_id` = arm.`role_id`
AND x.`menu_id` = m.`id`
AND x.`del_state` = 0
);