143 lines
4.2 KiB
SQL
143 lines
4.2 KiB
SQL
-- ================================================
|
||
-- 微信菜单数据修复脚本
|
||
-- ================================================
|
||
-- 此脚本用于检查和修复数据库中的无效微信菜单数据
|
||
|
||
-- ------------------------------------------------
|
||
-- 1. 检查所有可能有问题的菜单数据
|
||
-- ------------------------------------------------
|
||
|
||
-- 检查 view 类型但 URL 为空的菜单
|
||
SELECT
|
||
id,
|
||
menu_name AS '菜单名称',
|
||
menu_type AS '类型',
|
||
menu_url AS 'URL',
|
||
menu_key AS 'Key',
|
||
parent_id AS '父菜单ID',
|
||
'问题:view类型缺少URL' AS '问题描述'
|
||
FROM wechat_menu
|
||
WHERE menu_type = 'view'
|
||
AND (menu_url IS NULL OR menu_url = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- 检查 click 类型但 Key 为空的菜单
|
||
SELECT
|
||
id,
|
||
menu_name AS '菜单名称',
|
||
menu_type AS '类型',
|
||
menu_key AS 'Key',
|
||
parent_id AS '父菜单ID',
|
||
'问题:click类型缺少Key' AS '问题描述'
|
||
FROM wechat_menu
|
||
WHERE menu_type = 'click'
|
||
AND (menu_key IS NULL OR menu_key = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- 检查 miniprogram 类型但缺少必要字段的菜单
|
||
SELECT
|
||
id,
|
||
menu_name AS '菜单名称',
|
||
menu_type AS '类型',
|
||
menu_url AS 'URL',
|
||
appid AS 'AppID',
|
||
pagepath AS 'PagePath',
|
||
parent_id AS '父菜单ID',
|
||
'问题:miniprogram类型缺少必要字段' AS '问题描述'
|
||
FROM wechat_menu
|
||
WHERE menu_type = 'miniprogram'
|
||
AND (menu_url IS NULL OR menu_url = ''
|
||
OR appid IS NULL OR appid = ''
|
||
OR pagepath IS NULL OR pagepath = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- ------------------------------------------------
|
||
-- 2. 修复方案(请根据实际情况选择执行)
|
||
-- ------------------------------------------------
|
||
|
||
-- 方案A:禁用所有无效的菜单(推荐,不会删除数据)
|
||
-- 禁用 view 类型但 URL 为空的菜单
|
||
UPDATE wechat_menu
|
||
SET is_enabled = 0,
|
||
description = CONCAT(IFNULL(description, ''), ' [自动禁用:缺少URL]')
|
||
WHERE menu_type = 'view'
|
||
AND (menu_url IS NULL OR menu_url = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- 禁用 click 类型但 Key 为空的菜单
|
||
UPDATE wechat_menu
|
||
SET is_enabled = 0,
|
||
description = CONCAT(IFNULL(description, ''), ' [自动禁用:缺少Key]')
|
||
WHERE menu_type = 'click'
|
||
AND (menu_key IS NULL OR menu_key = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- 禁用 miniprogram 类型但缺少必要字段的菜单
|
||
UPDATE wechat_menu
|
||
SET is_enabled = 0,
|
||
description = CONCAT(IFNULL(description, ''), ' [自动禁用:缺少必要字段]')
|
||
WHERE menu_type = 'miniprogram'
|
||
AND (menu_url IS NULL OR menu_url = ''
|
||
OR appid IS NULL OR appid = ''
|
||
OR pagepath IS NULL OR pagepath = '')
|
||
AND is_enabled = 1;
|
||
|
||
-- ------------------------------------------------
|
||
-- 方案B:手动修复特定菜单(示例)
|
||
-- ------------------------------------------------
|
||
|
||
-- 如果您想保留 "首页" 菜单,可以为其添加URL
|
||
-- UPDATE wechat_menu
|
||
-- SET menu_url = 'https://your-website.com'
|
||
-- WHERE menu_name = '首页' AND menu_type = 'view';
|
||
|
||
-- 如果您想保留 "帮助中心" 菜单,可以为其添加URL
|
||
-- UPDATE wechat_menu
|
||
-- SET menu_url = 'https://your-website.com/help'
|
||
-- WHERE menu_name = '帮助中心' AND menu_type = 'view';
|
||
|
||
-- 或者,如果您想将这些菜单改为 click 类型:
|
||
-- UPDATE wechat_menu
|
||
-- SET menu_type = 'click', menu_key = 'MENU_HOME', menu_url = NULL
|
||
-- WHERE menu_name = '首页';
|
||
|
||
-- ------------------------------------------------
|
||
-- 方案C:删除无效菜单(慎用!)
|
||
-- ------------------------------------------------
|
||
|
||
-- 如果您确定要删除这些无效菜单,取消下面的注释
|
||
-- DELETE FROM wechat_menu
|
||
-- WHERE menu_type = 'view'
|
||
-- AND (menu_url IS NULL OR menu_url = '')
|
||
-- AND is_enabled = 1;
|
||
|
||
-- ------------------------------------------------
|
||
-- 3. 修复后验证
|
||
-- ------------------------------------------------
|
||
|
||
-- 查看所有启用的菜单
|
||
SELECT
|
||
id,
|
||
parent_id,
|
||
menu_name,
|
||
menu_type,
|
||
menu_key,
|
||
menu_url,
|
||
is_enabled,
|
||
sort_order
|
||
FROM wechat_menu
|
||
WHERE is_enabled = 1
|
||
ORDER BY parent_id ASC, sort_order ASC;
|
||
|
||
-- 统计菜单数量
|
||
SELECT
|
||
is_enabled,
|
||
COUNT(*) as count,
|
||
CASE
|
||
WHEN is_enabled = 1 THEN '启用'
|
||
ELSE '禁用'
|
||
END as status
|
||
FROM wechat_menu
|
||
GROUP BY is_enabled;
|
||
|