20260923_add_water_mini_identity_menu.sql 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. -- 水泉智配:新增“供水小程序账号绑定”页面与子权限。可重复执行。
  2. SET NAMES utf8mb4;
  3. -- 一级菜单“水泉智配”。若已存在则跳过;缺失时由后台菜单处理器再补齐。
  4. INSERT INTO `sa_system_menu` (
  5. `parent_id`,`name`,`code`,`slug`,`type`,`path`,`component`,`method`,`icon`,`sort`,
  6. `link_url`,`is_iframe`,`is_keep_alive`,`is_hidden`,`is_fixed_tab`,`is_full_page`,
  7. `generate_id`,`generate_key`,`status`,`remark`,`created_by`,`updated_by`,
  8. `create_time`,`update_time`,`delete_time`
  9. )
  10. SELECT 0, 'water-admin', 'WaterAdmin', '', 1, '/water-overview', 'water/overview/index', '', 'ri:droplet-line', 80,
  11. NULL, 2, 2, 2, 2, 2,
  12. 0, NULL, 1, '云泉智配供水一站式后台入口', 1, 1,
  13. NOW(), NOW(), NULL
  14. WHERE NOT EXISTS (
  15. SELECT 1 FROM `sa_system_menu` WHERE `code` = 'WaterAdmin' AND `delete_time` IS NULL
  16. );
  17. -- 绑定用户列表页面
  18. INSERT INTO `sa_system_menu` (
  19. `parent_id`,`name`,`code`,`slug`,`type`,`path`,`component`,`method`,`icon`,`sort`,
  20. `link_url`,`is_iframe`,`is_keep_alive`,`is_hidden`,`is_fixed_tab`,`is_full_page`,
  21. `generate_id`,`generate_key`,`status`,`remark`,`created_by`,`updated_by`,
  22. `create_time`,`update_time`,`delete_time`
  23. )
  24. SELECT p.id, '小程序账号绑定', 'WaterMiniIdentity', 'core:water:mini-users:read', 2,
  25. '/water/mini-identity', 'water/mini-identity/index', 'GET', 'ri:user-shared-line', 130,
  26. NULL, 2, 2, 2, 2, 2,
  27. 0, NULL, 1, '列出已登录小程序用户,向企业/司机/代理档案授予身份', 1, 1,
  28. NOW(), NOW(), NULL
  29. FROM `sa_system_menu` p
  30. WHERE p.code = 'WaterAdmin' AND p.delete_time IS NULL
  31. AND NOT EXISTS (
  32. SELECT 1 FROM `sa_system_menu` m WHERE m.code = 'WaterMiniIdentity' AND m.delete_time IS NULL
  33. );
  34. -- 写入授权子权限(type=3)
  35. INSERT INTO `sa_system_menu` (
  36. `parent_id`,`name`,`code`,`slug`,`type`,`path`,`component`,`method`,`icon`,`sort`,
  37. `link_url`,`is_iframe`,`is_keep_alive`,`is_hidden`,`is_fixed_tab`,`is_full_page`,
  38. `generate_id`,`generate_key`,`status`,`remark`,`created_by`,`updated_by`,
  39. `create_time`,`update_time`,`delete_time`
  40. )
  41. SELECT p.id, perms.name, perms.code, perms.slug, 3, NULL, NULL, perms.method, NULL, perms.sort,
  42. NULL, 2, 2, 2, 2, 2,
  43. 0, NULL, 1, perms.remark, 1, 1,
  44. NOW(), NOW(), NULL
  45. FROM `sa_system_menu` p
  46. CROSS JOIN (
  47. SELECT 'grant-mini-identity' AS name,
  48. 'WaterMiniIdentityGrant' AS code,
  49. 'core:water:mini-grants:write' AS slug,
  50. 'POST' AS method,
  51. 100 AS sort,
  52. 'bind revoke mini program identity' AS remark
  53. ) perms
  54. WHERE p.code = 'WaterMiniIdentity' AND p.delete_time IS NULL
  55. AND NOT EXISTS (
  56. SELECT 1 FROM `sa_system_menu` m WHERE m.slug = perms.slug AND m.delete_time IS NULL
  57. );
  58. -- 已有该页面权限的角色,自动继承“授权/撤销”子权限
  59. INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
  60. SELECT DISTINCT rm.role_id, child.id
  61. FROM `sa_system_role_menu` rm
  62. INNER JOIN `sa_system_menu` page
  63. ON page.id = rm.menu_id
  64. AND page.code = 'WaterMiniIdentity'
  65. AND page.delete_time IS NULL
  66. INNER JOIN `sa_system_menu` child
  67. ON child.parent_id = page.id
  68. AND child.type = 3
  69. AND child.delete_time IS NULL
  70. LEFT JOIN `sa_system_role_menu` existing
  71. ON existing.role_id = rm.role_id
  72. AND existing.menu_id = child.id
  73. WHERE existing.id IS NULL;