64 lines
4.1 KiB
SQL
64 lines
4.1 KiB
SQL
-- 在权限库执行,只需填写商户结账管理的父菜单ID,租户和配置页自动读取。
|
|
-- 整份脚本在同一会话执行;若执行报错,应ROLLBACK后再重试。
|
|
SET @checkout_bill_parent_id = 2117168949136232449;
|
|
|
|
START TRANSACTION;
|
|
|
|
-- 锁定父菜单,避免同时重复安装;先清空变量,防止读取不到时沿用旧值。
|
|
SET @checkout_bill_tenant_id = NULL;
|
|
SELECT tenant_id INTO @checkout_bill_tenant_id FROM sys_menu
|
|
WHERE menu_id = @checkout_bill_parent_id AND del_flag = '0' AND menu_type = '0' FOR UPDATE;
|
|
SET @checkout_bill_setting_id = (
|
|
SELECT menu_id FROM sys_menu WHERE tenant_id = @checkout_bill_tenant_id
|
|
AND parent_id = @checkout_bill_parent_id AND path = '/mch/checkout/setting/index'
|
|
AND del_flag = '0' AND menu_type = '0'
|
|
);
|
|
|
|
-- 记录页与配置页放在同一父菜单下,已存在时跳过新增。
|
|
INSERT INTO sys_menu (menu_id, name, path, component, parent_id, icon, visible, sort_order,
|
|
keep_alive, menu_type, create_by, create_time, update_by, update_time, del_flag, tenant_id)
|
|
SELECT UUID_SHORT(), '商户结账记录', '/mch/checkout/record/index', 'mch/checkout/record/index',
|
|
@checkout_bill_parent_id, 'ele-Tickets', '1', 81, '1', '0', 'admin', NOW(), 'admin', NOW(), '0', @checkout_bill_tenant_id
|
|
FROM DUAL WHERE @checkout_bill_setting_id IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE tenant_id = @checkout_bill_tenant_id
|
|
AND path = '/mch/checkout/record/index' AND del_flag = '0');
|
|
SET @checkout_bill_record_id = (
|
|
SELECT menu_id FROM sys_menu WHERE tenant_id = @checkout_bill_tenant_id
|
|
AND parent_id = @checkout_bill_parent_id AND path = '/mch/checkout/record/index'
|
|
AND del_flag = '0' AND menu_type = '0'
|
|
AND (component IS NULL OR component = '' OR component = 'mch/checkout/record/index')
|
|
);
|
|
UPDATE sys_menu SET component = 'mch/checkout/record/index', update_by = 'admin', update_time = NOW()
|
|
WHERE menu_id = @checkout_bill_record_id AND tenant_id = @checkout_bill_tenant_id
|
|
AND (component IS NULL OR component = '');
|
|
|
|
-- 发起权限挂在配置页,其余权限挂在记录页;重复执行按租户和权限标识去重。
|
|
INSERT INTO sys_menu (menu_id, name, permission, parent_id, visible, sort_order, keep_alive,
|
|
menu_type, create_by, create_time, update_by, update_time, del_flag, tenant_id)
|
|
SELECT UUID_SHORT(), p.name, p.permission,
|
|
CASE WHEN p.permission = 'wallet_mchCheckoutBill_add' THEN @checkout_bill_setting_id ELSE @checkout_bill_record_id END,
|
|
'1', p.sort_order, '0', '1', 'admin', NOW(), 'admin', NOW(), '0', @checkout_bill_tenant_id
|
|
FROM (
|
|
SELECT '查看结账账单' name, 'wallet_mchCheckoutBill_view' permission, 1 sort_order
|
|
UNION ALL SELECT '发起酒店结账', 'wallet_mchCheckoutBill_add', 2
|
|
UNION ALL SELECT '登记商户付款', 'wallet_mchCheckoutBill_pay', 3
|
|
UNION ALL SELECT '作废商户明细', 'wallet_mchCheckoutBill_void', 4
|
|
UNION ALL SELECT '复核订单事实', 'wallet_mchCheckoutBill_recheck', 5
|
|
UNION ALL SELECT '处理付款差异', 'wallet_mchCheckoutBill_handle', 6
|
|
) p
|
|
WHERE @checkout_bill_setting_id IS NOT NULL AND @checkout_bill_record_id IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM sys_menu m WHERE m.tenant_id = @checkout_bill_tenant_id
|
|
AND m.permission = p.permission AND m.del_flag = '0');
|
|
|
|
COMMIT;
|
|
|
|
-- 结果应包含记录菜单和6项按钮权限;为空或缺项时核对父菜单、配置页及已有权限位置。
|
|
SELECT menu_id, name, parent_id, path, permission FROM sys_menu
|
|
WHERE tenant_id = @checkout_bill_tenant_id AND del_flag = '0'
|
|
AND (menu_id = @checkout_bill_record_id
|
|
OR (parent_id = @checkout_bill_setting_id AND permission = 'wallet_mchCheckoutBill_add' AND menu_type = '1')
|
|
OR (parent_id = @checkout_bill_record_id AND menu_type = '1'
|
|
AND permission IN ('wallet_mchCheckoutBill_view', 'wallet_mchCheckoutBill_pay',
|
|
'wallet_mchCheckoutBill_void', 'wallet_mchCheckoutBill_recheck', 'wallet_mchCheckoutBill_handle')))
|
|
ORDER BY parent_id, sort_order, menu_id;
|