USE cattletrade;

-- 完整修复中转仓管理菜单数据
-- 1. 检查并扩展字段长度（如果需要）
-- 2. 修复被截断的字段值
-- 3. 删除重复的菜单数据

-- ============================================
-- 步骤0：检查并扩展字段长度（如果需要）
-- ============================================
-- 如果 page_url 或 authority 字段长度不足，先扩展字段长度
-- 注意：执行前请先检查当前字段长度，如果已经足够则不需要执行

-- 扩展 page_url 字段长度（如果需要）
-- ALTER TABLE sys_menu MODIFY COLUMN page_url VARCHAR(255) COMMENT '前端路由地址';

-- 扩展 authority 字段长度（如果需要）
-- ALTER TABLE sys_menu MODIFY COLUMN authority VARCHAR(100) COMMENT '权限字符串';

-- ============================================
-- 步骤1：删除重复的菜单数据
-- ============================================
-- 删除 id=98 的子菜单的按钮权限（如果存在）
DELETE FROM sys_menu 
WHERE parent_id IN (99, 104, 109) 
  AND type = 2
  AND is_delete = 0;

-- 删除 id=98 的子菜单（二级菜单）
DELETE FROM sys_menu 
WHERE id IN (99, 104, 109) 
  AND parent_id = 98
  AND type = 1
  AND is_delete = 0;

-- 删除 id=98 的父菜单（如果存在）
DELETE FROM sys_menu 
WHERE id = 98 
  AND name = '中转仓管理'
  AND parent_id = 0
  AND (type = 0 OR type IS NULL)
  AND is_delete = 0;

-- ============================================
-- 步骤2：修复被截断的字段值（直接通过ID修复）
-- ============================================

-- 修复进仓管理菜单（id=88）的 page_url
UPDATE sys_menu 
SET 
    page_url = 'warehouse/warehouseIn',
    update_time = NOW()
WHERE id = 88
  AND is_delete = 0;

-- 修复出仓管理菜单（id=93）的 page_url 和 authority
UPDATE sys_menu 
SET 
    page_url = 'warehouse/warehouseOut',
    authority = 'warehouseout:list',
    update_time = NOW()
WHERE id = 93
  AND is_delete = 0;

-- ============================================
-- 步骤3：确保所有字段值正确（通过名称修复，作为后备）
-- ============================================

-- 修复进仓管理菜单的 page_url（通过名称匹配）
UPDATE sys_menu 
SET 
    page_url = 'warehouse/warehouseIn',
    update_time = NOW()
WHERE name = '进仓管理' 
  AND type = 1
  AND parent_id = 82
  AND page_url != 'warehouse/warehouseIn'
  AND is_delete = 0;

-- 修复出仓管理菜单的 page_url 和 authority（通过名称匹配）
UPDATE sys_menu 
SET 
    page_url = 'warehouse/warehouseOut',
    authority = 'warehouseout:list',
    update_time = NOW()
WHERE name = '出仓管理' 
  AND type = 1
  AND parent_id = 82
  AND (page_url != 'warehouse/warehouseOut' OR authority != 'warehouseout:list')
  AND is_delete = 0;

-- ============================================
-- 步骤4：确保父菜单的 type 字段正确
-- ============================================
UPDATE sys_menu 
SET 
    type = 0,
    update_time = NOW()
WHERE id = 82 
  AND (type IS NULL OR type != 0)
  AND is_delete = 0;

-- ============================================
-- 步骤5：验证修复结果
-- ============================================
-- 执行以下查询验证数据是否正确：
-- SELECT id, parent_id, type, name, route_url, page_url, authority, LENGTH(page_url) as page_url_len, LENGTH(authority) as authority_len
-- FROM sys_menu 
-- WHERE (id = 82 OR parent_id = 82) 
--   AND is_delete = 0 
-- ORDER BY id, sort;
--
-- 预期结果：
-- id=82: type = 0, page_url = NULL, authority = NULL
-- id=83: route_url = 'list', page_url = 'warehouse/warehouse', authority = 'warehouse:list'
-- id=88: route_url = 'in', page_url = 'warehouse/warehouseIn', authority = 'warehousein:list'
-- id=93: route_url = 'out', page_url = 'warehouse/warehouseOut', authority = 'warehouseout:list'

