migrate_20260820_pl_plan_contract_complete_menu.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. -- backend/scripts/migrate_20260820_pl_plan_contract_complete_menu.sql
  2. -- 运输计划合同完善:挂在 PL_GROUP_PLAN 下,order_num=3;按钮权限保存合同关联
  3. -- 可重复执行(幂等)
  4. -- 1) 菜单 C:运输计划合同完善
  5. INSERT INTO `sys_menu` (
  6. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  7. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  8. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  9. ) VALUES (
  10. 'PL_PLAN_CONTRACT',
  11. '运输计划合同完善',
  12. 'PL_GROUP_PLAN',
  13. 'C',
  14. 'plan-contract',
  15. 'pl/plan-contract/index',
  16. 'pl:plan-contract:list',
  17. 1, '1', '1', 'shanxia2.0', 3,
  18. '缺合同运输计划补齐',
  19. 'system', '', NOW(), NULL, NOW(), 0
  20. )
  21. ON DUPLICATE KEY UPDATE
  22. `menu_name`=VALUES(`menu_name`),
  23. `parent_id`=VALUES(`parent_id`),
  24. `path`=VALUES(`path`),
  25. `component`=VALUES(`component`),
  26. `perms`=VALUES(`perms`),
  27. `order_num`=VALUES(`order_num`),
  28. `visible`=VALUES(`visible`),
  29. `status`=VALUES(`status`);
  30. -- 2) 菜单 F:保存合同关联
  31. INSERT INTO `sys_menu` (
  32. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  33. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  34. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  35. ) VALUES (
  36. 'PL_PLAN_CONTRACT_UPD',
  37. '保存合同关联',
  38. 'PL_PLAN_CONTRACT',
  39. 'F',
  40. '',
  41. NULL,
  42. 'pl:plan-contract:update',
  43. 1, '1', '1', 'shanxia2.0', 1,
  44. NULL,
  45. 'system', '', NOW(), NULL, NOW(), 0
  46. )
  47. ON DUPLICATE KEY UPDATE
  48. `menu_name`=VALUES(`menu_name`),
  49. `perms`=VALUES(`perms`),
  50. `parent_id`=VALUES(`parent_id`);
  51. -- 3) 角色授权:复制已有 PL_PLAN 的角色集合
  52. INSERT INTO `sys_role_menu` (
  53. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  54. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  55. )
  56. SELECT
  57. -- 勿用 UUID():同句多行 INSERT 易撞主键;按 role+menu 生成确定性 id
  58. MD5(CONCAT(`role_id`, '#PL_PLAN_CONTRACT')),
  59. `role_id`,
  60. 'PL_PLAN_CONTRACT',
  61. `tenant_no`,
  62. 0,
  63. NULL,
  64. `create_by`,
  65. `create_dept_id`,
  66. NOW(),
  67. `update_by`,
  68. NOW(),
  69. 0
  70. FROM `sys_role_menu`
  71. WHERE `menu_id` = 'PL_PLAN'
  72. AND `del_flag` = 0
  73. AND NOT EXISTS (
  74. SELECT 1
  75. FROM `sys_role_menu` x
  76. WHERE x.`role_id` = `sys_role_menu`.`role_id`
  77. AND x.`menu_id` = 'PL_PLAN_CONTRACT'
  78. AND x.`del_flag` = 0
  79. );
  80. INSERT INTO `sys_role_menu` (
  81. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  82. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  83. )
  84. SELECT
  85. MD5(CONCAT(`role_id`, '#PL_PLAN_CONTRACT_UPD')),
  86. `role_id`,
  87. 'PL_PLAN_CONTRACT_UPD',
  88. `tenant_no`,
  89. 0,
  90. NULL,
  91. `create_by`,
  92. `create_dept_id`,
  93. NOW(),
  94. `update_by`,
  95. NOW(),
  96. 0
  97. FROM `sys_role_menu`
  98. WHERE `menu_id` = 'PL_PLAN'
  99. AND `del_flag` = 0
  100. AND NOT EXISTS (
  101. SELECT 1
  102. FROM `sys_role_menu` x
  103. WHERE x.`role_id` = `sys_role_menu`.`role_id`
  104. AND x.`menu_id` = 'PL_PLAN_CONTRACT_UPD'
  105. AND x.`del_flag` = 0
  106. );