Files

51 lines
2.6 KiB
MySQL
Raw Permalink Normal View History

-- ============================================================
-- 菜单:客户中心下增加「经销商管理」(幂等)
-- component/path 对齐前端 views/customer/dealer
-- keep_alive0=开启缓存affix_tab0=固定(输出到前端 meta 时取反)
-- 注意nl_menu 无 type/status 列,勿照搬其它脚手架字段
-- ============================================================
SET @db := DATABASE();
SET @parent_id := (
SELECT id FROM nl_menu WHERE name = 'Customer' AND deleted_at = 0 LIMIT 1
);
SET @exists := (
SELECT COUNT(*) FROM nl_menu
WHERE name = 'CustomerDealer' AND deleted_at = 0
);
-- 插在「微信用户」后sort=1企业管理及之后在 menu-sync / 手工时再调序
SET @sql := IF(@parent_id IS NOT NULL AND @exists = 0,
CONCAT(
'INSERT INTO `nl_menu` (`title`,`icon`,`name`,`path`,`component`,`redirect`,`keep_alive`,`hide_in_menu`,`affix_tab`,`badge`,`badge_type`,`badge_variants`,`iframe_src`,`pid`,`sort`,`query`,`created_at`,`updated_at`,`deleted_at`) VALUES (',
'''经销商管理'', ''lucide:handshake'', ''CustomerDealer'', ''/customer/dealer'', ''/customer/dealer/index'', '''', 1, 0, 1, '''', 0, 0, '''', ',
@parent_id,
', 1, '''', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0)'
),
'SELECT ''skip menu CustomerDealer'' AS msg'
);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- 与 lgp_menu 口径一致:企业/清单/订单 sort 后移(仅当经销商菜单刚存在时幂等更新)
UPDATE `nl_menu` SET `sort` = 2, `updated_at` = UNIX_TIMESTAMP()
WHERE `name` = 'CustomerEnterprise' AND `deleted_at` = 0 AND `sort` < 2;
UPDATE `nl_menu` SET `sort` = 3, `updated_at` = UNIX_TIMESTAMP()
WHERE `name` = 'CustomerList' AND `deleted_at` = 0 AND `sort` < 3;
UPDATE `nl_menu` SET `sort` = 4, `updated_at` = UNIX_TIMESTAMP()
WHERE `name` = 'CustomerOrder' AND `deleted_at` = 0 AND `sort` < 4;
-- 凡已拥有「微信用户」菜单的角色,同步挂上「经销商管理」(幂等)
SET @menu_id := (SELECT id FROM nl_menu WHERE name = 'CustomerDealer' AND deleted_at = 0 LIMIT 1);
SET @wx_user_menu_id := (SELECT id FROM nl_menu WHERE name = 'CustomerWxUser' AND deleted_at = 0 LIMIT 1);
INSERT INTO `nl_role_menu_relations` (`role_id`, `menu_id`, `created_at`)
SELECT r.role_id, @menu_id, UNIX_TIMESTAMP()
FROM `nl_role_menu_relations` r
WHERE @menu_id IS NOT NULL
AND @wx_user_menu_id IS NOT NULL
AND r.menu_id = @wx_user_menu_id
AND NOT EXISTS (
SELECT 1 FROM `nl_role_menu_relations` x
WHERE x.role_id = r.role_id AND x.menu_id = @menu_id
);