2026-10-05-presign-order-menu.sql 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. -- =============================================================================
  2. -- 预签约订单菜单:插入 sys_menu,并授权给已有「采集协议单」的角色
  3. -- 测试库 zkxw-sc 已确认原先没有该菜单行。
  4. -- 菜单位置:采集协议单 之下、缴费信息/样本信息管理 之上
  5. -- id: 50000000000000000000000000000020
  6. -- perms: cell-storage:presign-order:list
  7. -- =============================================================================
  8. INSERT INTO sys_menu (
  9. id, menu_name, parent_id, menu_type, path, component, perms,
  10. is_frame, visible, status, tenant_no, order_num, remark,
  11. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  12. )
  13. SELECT
  14. '50000000000000000000000000000020',
  15. '预签约订单',
  16. 'CEL00000000000000000000000000001',
  17. 'C',
  18. 'presign-order',
  19. '/cell-storage/presign-order/index',
  20. 'cell-storage:presign-order:list',
  21. 1,
  22. '1',
  23. '1',
  24. 'zkxw',
  25. 3,
  26. '细胞存储:预签约订单',
  27. NULL,
  28. '',
  29. NOW(),
  30. NULL,
  31. NOW(),
  32. 0
  33. FROM DUAL
  34. WHERE NOT EXISTS (
  35. SELECT 1 FROM sys_menu m
  36. WHERE m.del_flag = 0
  37. AND (
  38. m.id = '50000000000000000000000000000020'
  39. OR m.perms = 'cell-storage:presign-order:list'
  40. )
  41. );
  42. -- 已有采集协议单权限的角色补授权(幂等)
  43. INSERT INTO sys_role_menu (
  44. id, role_id, menu_id, tenant_no, order_num, remark,
  45. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  46. )
  47. SELECT
  48. MD5(CONCAT(r.id, '|50000000000000000000000000000020')),
  49. r.id,
  50. '50000000000000000000000000000020',
  51. IFNULL(NULLIF(r.tenant_no, ''), 'zkxw'),
  52. 0,
  53. 'grant presign-order to protocol-audit roles',
  54. NULL,
  55. '',
  56. NOW(),
  57. NULL,
  58. NOW(),
  59. 0
  60. FROM sys_role r
  61. INNER JOIN sys_role_menu rm
  62. ON rm.role_id = r.id
  63. AND rm.menu_id = '50000000000000000000000000000003'
  64. AND rm.del_flag = 0
  65. WHERE r.del_flag = 0
  66. AND NOT EXISTS (
  67. SELECT 1 FROM sys_role_menu x
  68. WHERE x.role_id = r.id
  69. AND x.menu_id = '50000000000000000000000000000020'
  70. AND x.del_flag = 0
  71. );