用SQL批量更新通达OA角色权限

warning: 这篇文章距离上次修改已过300天,其中的内容可能已经有所变动。

用SQL批量更新通达OA角色权限

备忘

由于给通达OA开发了个新模块,想让该模块某些权限开发给大部分人员。几百个角色,一个个改权限,还是挺麻烦的。于是看看能不能批量处理,让甲方爸爸加快结尾款$的速度。查看通达OA后台有导入导出功能,但导出时权限模块是中文的==显然不太符合常规逻辑==,应该要对应的模块ID才对。

那就改数据库吧,经查其数据库有两个关键表对应这里的功能实现。一个是sys_function,用于存放模块信息;另一个是user_priv,用于保存角色允许访问的模块列表。知道这两个表后,还有啥难度呢,备份当前表,一顿操作猛如虎,一会就搞定了!

image-20231219001147349

image-20231219001522874

--以下是测试示例
update  user_priv set FUNC_ID_STR=replace(FUNC_ID_STR,',183','') ;-- where priv_name like '%xxx%';

update  user_priv set FUNC_ID_STR=CONCAT(FUNC_ID_STR,'301,302,313,315,')  where FUNC_ID_STR not like '%313%'; --  where priv_name like '%xxx%';
select * from user_priv where priv_name like '%xxx%';
select * from  user_priv WHERE FUNC_ID_STR LIKE '%313%';

select * from sys_function   where func_id>=300  and func_id<=399;
注意: 这样改完后还需要到后台【设置权限】重新点一下,怀疑只改数据库没更新到缓存或相关模块!

--301,302,313,315

评论已关闭