20260826_add_device_distribution_page.sql 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. -- 去铺货页面和所需接口权限,可重复执行。
  2. -- 提交复用 /core/merchant/device/bind,业务事务位于 MerchantLogic::bindDevices。
  3. INSERT INTO `sa_system_menu` (
  4. `parent_id`, `name`, `code`, `slug`, `type`, `path`, `component`, `method`, `icon`, `sort`,
  5. `link_url`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`,
  6. `generate_id`, `generate_key`, `status`, `remark`, `created_by`, `updated_by`, `create_time`, `update_time`, `delete_time`
  7. )
  8. SELECT
  9. device_menu.`id`, '去铺货', 'DistributeDevice', NULL, 2,
  10. 'distribute', '/device/distribute', NULL, 'ri:send-plane-line', 75,
  11. NULL, 2, 2, 1, 2, 2, 0, NULL, 1,
  12. '选择已有商户并批量铺货未绑定设备', 1, 1, NOW(), NOW(), NULL
  13. FROM `sa_system_menu` device_menu
  14. WHERE device_menu.`code` = 'Device'
  15. AND device_menu.`delete_time` IS NULL
  16. AND NOT EXISTS (
  17. SELECT 1 FROM `sa_system_menu`
  18. WHERE `code` = 'DistributeDevice' AND `delete_time` IS NULL
  19. );
  20. -- 已有设备页面权限的角色获得去铺货页面、商户候选列表和设备绑定权限。
  21. INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
  22. SELECT DISTINCT source_role.`role_id`, target_menu.`id`
  23. FROM `sa_system_role_menu` source_role
  24. INNER JOIN `sa_system_menu` source_menu
  25. ON source_menu.`id` = source_role.`menu_id`
  26. AND source_menu.`code` IN ('MyDevice', 'SubordinateDevice')
  27. AND source_menu.`delete_time` IS NULL
  28. INNER JOIN `sa_system_menu` target_menu
  29. ON (
  30. target_menu.`code` = 'DistributeDevice'
  31. OR target_menu.`slug` IN ('core:merchant:index', 'core:merchant:device:bind')
  32. )
  33. AND target_menu.`delete_time` IS NULL
  34. LEFT JOIN `sa_system_role_menu` existing_role
  35. ON existing_role.`role_id` = source_role.`role_id`
  36. AND existing_role.`menu_id` = target_menu.`id`
  37. WHERE existing_role.`id` IS NULL;