huayang/backend/sql/patch_fix_sys_menu_and_site_config.sql
liuwenxin 85083ab962 feat(site): integrate multilingual content management / 集成多语言内容管理
完善官网、管理后台与后端的多语言内容编辑和发布流程,调整站点页面及相关接口,并同步数据库脚本。

新增容器部署配置,改用环境变量注入数据库凭据;补充仓库忽略规则,并停止跟踪本地环境文件和 Maven 构建产物。
2026-09-10 14:46:06 +08:00

94 lines
3.8 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.

-- =====================================================================
-- 修复库结构/数据常见问题(基于 2026-05-09 导出库核对)
-- 1) sys_menu 根节点被误写成「菜单管理」且 parent_id=1,导致侧栏树异常
-- 2) 缺少 menu_id=2/3/102,监控/工具目录与菜单管理入口悬空
-- 3) huayang_site_config 重复 contact_* 键(保存联系我们页时重复 INSERT)
-- 4) huayang_i18n.i18n_value 仍为 varchar(500) 时扩展为 LONGTEXT
-- 执行环境:MySQL 8+
-- 幂等:可重复执行
-- =====================================================================
SET NAMES utf8mb4;
-- ---------- 1. 修复 sys_menu 根目录 ----------
UPDATE `sys_menu`
SET
`menu_name` = '系统管理',
`parent_id` = 0,
`order_num` = 1,
`path` = 'system',
`component` = NULL,
`perms` = '',
`icon` = 'system',
`menu_type` = 'M',
`remark` = '系统管理目录'
WHERE `menu_id` = 1;
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
2, '系统监控', 0, 2, 'monitor', NULL,
'', '', 1, 0, 'M', '0', '0',
'', 'monitor', 'admin', NOW(), '', NULL, '系统监控目录'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `menu_id` = 2);
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
3, '系统工具', 0, 3, 'tool', NULL,
'', '', 1, 0, 'M', '0', '0',
'', 'tool', 'admin', NOW(), '', NULL, '系统工具目录'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `menu_id` = 3);
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
102, '菜单管理', 1, 3, 'menu', 'system/menu/index',
'', '', 1, 0, 'C', '0', '0',
'system:menu:list', 'tree-table', 'admin', NOW(), '', NULL, '菜单管理菜单'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `menu_id` = 102);
-- 普通角色补挂目录与菜单管理(按钮权限 1012~1015 的父菜单)
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 2, 2 FROM DUAL
WHERE EXISTS (SELECT 1 FROM `sys_role` WHERE `role_id` = 2)
AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 2 AND `menu_id` = 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 2, 3 FROM DUAL
WHERE EXISTS (SELECT 1 FROM `sys_role` WHERE `role_id` = 2)
AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 2 AND `menu_id` = 3);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 2, 102 FROM DUAL
WHERE EXISTS (SELECT 1 FROM `sys_role` WHERE `role_id` = 2)
AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 2 AND `menu_id` = 102);
-- ---------- 2. 去重站点配置 contact_*(保留最小 config_id) ----------
DELETE t FROM `huayang_site_config` t
INNER JOIN (
SELECT `config_key`, MIN(`config_id`) AS keep_id
FROM `huayang_site_config`
WHERE `config_key` IN ('contact_phone', 'contact_email', 'contact_address')
GROUP BY `config_key`
HAVING COUNT(*) > 1
) d ON t.`config_key` = d.`config_key` AND t.`config_id` > d.keep_id;
-- ---------- 3. i18n 富文本字段(与 patch_i18n_value_to_longtext.sql 一致) ----------
ALTER TABLE `huayang_i18n`
MODIFY COLUMN `i18n_value` LONGTEXT
CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
NOT NULL COMMENT '翻译值(支持富文本,HTML/Markdown 等)';