143 lines
4.2 KiB
MySQL
143 lines
4.2 KiB
MySQL
|
|
-- ================================================
|
|||
|
|
-- 微信菜单数据修复脚本
|
|||
|
|
-- ================================================
|
|||
|
|
-- 此脚本用于检查和修复数据库中的无效微信菜单数据
|
|||
|
|
|
|||
|
|
-- ------------------------------------------------
|
|||
|
|
-- 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;
|
|||
|
|
|