51 lines
2.6 KiB
SQL
51 lines
2.6 KiB
SQL
-- ============================================================
|
||
-- 菜单:客户中心下增加「经销商管理」(幂等)
|
||
-- component/path 对齐前端 views/customer/dealer
|
||
-- keep_alive:0=开启缓存;affix_tab:0=固定(输出到前端 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
|
||
);
|