2026-09-21-oa-instance-view-grant.sql 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. -- 评论 @ 用户:查看授权(不写入抄送任务)
  2. ALTER TABLE `oa_instance_comment`
  3. ADD COLUMN `mention_user_ids_json` text COLLATE utf8mb4_unicode_ci NULL COMMENT '评论@用户ID列表 JSON' AFTER `revoked_time`;
  4. CREATE TABLE IF NOT EXISTS `oa_instance_view_grant` (
  5. `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
  6. `instance_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实例ID',
  7. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '被授权查看人',
  8. `source` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'comment_mention' COMMENT 'comment_mention',
  9. `comment_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源评论ID,撤回评论不删除授权',
  10. `granted_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '授权人',
  11. `tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  12. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  13. `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  14. `create_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人id',
  15. `create_dept_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  16. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  17. `update_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人id',
  18. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  19. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  20. PRIMARY KEY (`id`),
  21. UNIQUE KEY `uk_oa_view_grant_user` (`tenant_no`,`instance_id`,`user_id`),
  22. KEY `idx_oa_view_grant_user_time` (`tenant_no`,`user_id`,`create_time`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批实例查看授权';
  24. -- 移动端「提到我的」:挂在与「抄送我的」相同的父菜单下,并复制其角色授权
  25. INSERT INTO `sys_menu` (
  26. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  27. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  28. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  29. )
  30. SELECT
  31. MD5(CONCAT('oa-mention-', s.`tenant_no`, '-', s.`id`)),
  32. '提到我的',
  33. s.`parent_id`,
  34. s.`menu_type`,
  35. '/pages/oa/mentions/index',
  36. s.`component`,
  37. 'oa:mention',
  38. s.`is_frame`,
  39. s.`visible`,
  40. s.`status`,
  41. s.`tenant_no`,
  42. IFNULL(s.`order_num`, 0) + 1,
  43. '评论@后可查看的审批单',
  44. s.`create_by`,
  45. s.`create_dept_id`,
  46. NOW(),
  47. s.`update_by`,
  48. NOW(),
  49. 0
  50. FROM `sys_menu` s
  51. WHERE s.`del_flag` = 0
  52. AND s.`menu_name` = '抄送我的'
  53. AND s.`path` LIKE '%oa/cc%'
  54. AND NOT EXISTS (
  55. SELECT 1 FROM `sys_menu` x
  56. WHERE x.`del_flag` = 0
  57. AND x.`tenant_no` = s.`tenant_no`
  58. AND x.`path` LIKE '%oa/mentions%'
  59. );
  60. INSERT INTO `sys_role_menu` (
  61. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  62. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  63. )
  64. SELECT
  65. MD5(CONCAT('oa-mention-role-', rm.`role_id`, '-', m.`id`)),
  66. rm.`role_id`,
  67. m.`id`,
  68. m.`tenant_no`,
  69. NULL,
  70. NULL,
  71. rm.`create_by`,
  72. IFNULL(rm.`create_dept_id`, ''),
  73. NOW(),
  74. rm.`update_by`,
  75. NOW(),
  76. 0
  77. FROM `sys_menu` m
  78. JOIN `sys_menu` cc
  79. ON cc.`del_flag` = 0
  80. AND cc.`tenant_no` = m.`tenant_no`
  81. AND cc.`parent_id` = m.`parent_id`
  82. AND cc.`menu_name` = '抄送我的'
  83. AND cc.`path` LIKE '%oa/cc%'
  84. JOIN `sys_role_menu` rm
  85. ON rm.`del_flag` = 0
  86. AND rm.`menu_id` = cc.`id`
  87. WHERE m.`del_flag` = 0
  88. AND m.`path` LIKE '%oa/mentions%'
  89. AND NOT EXISTS (
  90. SELECT 1 FROM `sys_role_menu` x
  91. WHERE x.`del_flag` = 0
  92. AND x.`role_id` = rm.`role_id`
  93. AND x.`menu_id` = m.`id`
  94. );