用SQL批量更新通达OA角色权限
warning:
这篇文章距离上次修改已过300天,其中的内容可能已经有所变动。
用SQL批量更新通达OA角色权限
备忘
由于给通达OA开发了个新模块,想让该模块某些权限开发给大部分人员。几百个角色,一个个改权限,还是挺麻烦的。于是看看能不能批量处理,让甲方爸爸加快结尾款$的速度。查看通达OA后台有导入导出功能,但导出时权限模块是中文的==显然不太符合常规逻辑==,应该要对应的模块ID才对。
那就改数据库吧,经查其数据库有两个关键表对应这里的功能实现。一个是sys_function
,用于存放模块信息;另一个是user_priv
,用于保存角色允许访问的模块列表。知道这两个表后,还有啥难度呢,备份当前表,一顿操作猛如虎,一会就搞定了!
--以下是测试示例
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
评论已关闭