给角色分配组织下的用户原创
7人赞赏了该文章
1399次浏览
编辑于2021年03月20日 12:08:14
1,需求背景:需要动态的在后人给不同角色分配不同组织下的用户
2,实现方案:利用PermissionServiceHelper帮助类来分配,在后台去处理
3,具体实现:
案例需求:现有管理员角色和开发者角色,同属于一个组织下,需要根据人员类型去对应的角色下分配这些用户。
具体代码:
/** * 给通用角色roleType分配组织partnerOrgId下的用户userIds * * @param roleType:通用角色的编码 * @param partnerOrgId:组织ID * @param userIds:用户ID */ private static void assignRole(String roleType, Long partnerOrgId, List<Long> userIds) { // 查询通用角色单据数据 QFilter roleFilter = new QFilter("number", QCP.equals, roleType); DynamicObject roleAdminDy = BusinessDataServiceHelper.loadSingle("perm_role", "id,number,name,bizdomain,roletype,group", new QFilter[] { roleFilter }); String roleId = roleAdminDy.getString("id"); String dimType = "DIM_ORG"; Map<Long, List<Long>> assignInfo = new HashMap<Long, List<Long>>(); assignInfo.put(partnerOrgId, userIds); Map<Long, Boolean> dimObjInfo = new HashMap<>(); dimObjInfo.put(partnerOrgId, true); boolean ifAdd = true; String source = "2"; /** * roleId:角色ID dimType: 隔离维度类型(如bos_org, bcm_model等任意基础资料类型) * assignInfo:键是隔离维度对象ID(如组织ID)的集合,值是用户ID dimObjInfo: dimObjInfo * 键是隔离维度对象ID(如组织ID),值是“是否包含下级”;可以传null,传null意味着默认所有组织都“不包含下级”。 * ifAdd:是否添加,如果是true,则为添加,false为删除;为false时,参数“orgInfo”没有意义,传null即可。 * source:记录权限来源:1为直接分配、2为通用角色分配、3为业务角色分配(若值为空,默认为2) bizRoleId:记录来源的业务角色,可为空 */ boolean roleSyns = PermissionServiceHelper.roleAssignOrgUser(roleId, dimType, assignInfo, dimObjInfo, ifAdd, source, null); log.info("------分配角色结果------:" + roleSyns); }
推荐阅读